besiege吧 关注:85,616贴子:858,005
  • 20回复贴,共1

人列三大门,以及一些地图编辑器经验

只看楼主收藏回复



IP属地:浙江1楼2018-09-27 18:03回复
    晚上有课回来更新


    IP属地:浙江2楼2018-09-27 18:04
    回复
      2025-06-25 04:39:54
      广告
      前排支持


      IP属地:浙江来自Android客户端3楼2018-09-27 18:21
      收起回复
        先是双输入的与门

        然后是双输入的或门

        然后是双输入与非门(懒得重新建,直接复制与门改


        IP属地:浙江4楼2018-09-27 21:43
        回复
          现在开始进行原理解释:
          这里动用的是小兵之间的仇恨机制(自己命名,并非官方。后简称仇恨。)和方块平移命令
          如下图所示:

          1-1

          1-2

          1-3

          1-4
          图1-1是与门未有输入时,图1-2是一端输入1时(按住输入值代表按键为输出,后同),可见第一个小兵(从左向右,后同。)没有走出框,意味着没有用进行输出,然后时图1-3是另一端输入2时,可见第一个小兵仍然没有走出框,也是没有输出。最后时1-4,当1、2同时输入时,这时候第一个小兵走出了方框,这时就进行了一次输出。


          IP属地:浙江5楼2018-09-27 22:04
          回复
            然而可以直接拿方块逻辑做吧


            IP属地:吉林来自Android客户端6楼2018-09-27 22:33
            收起回复
              现在讲解一下小兵的行为。
              小兵的行为遵从,先颜射,后种类;然而前两个都是根据小兵行为范围决定的
              颜色的意思就是,小兵会先对颜色阵营不同的最近的小兵做出反应。游戏中有4个颜色阵营+无颜色阵营,当小兵属于无颜色阵营,也就是默认阵营中时,这时他们会先对不同种类的最近的小兵作出反应。
              接下来进行小兵单位的细分(我喜欢叫生物单位)
              1、叉叔为首的平民单位
              2、伊普斯论、托不论德以及维京人代表的士兵
              3、🐏、🐓代表的动物
              首先生物单位是绝对服从行为逻辑的(但是有几种特殊的情况),所以平民不是天生就怕士兵,而是行为在控制。
              通常在游戏中我们看到的是士兵追着叉叔走,如下图

              但是若将士兵与平民的行为进行更改,如下图


              我们就看到了叉叔追着士兵跑的情形。
              这里就出现了第一个不遵守行为的情况。仔细看上图叉叔的行为,叉叔在追击状态下,并且开启了攻击,但是当叉叔追到了士兵之后,只是肛了上去,并没有“动手”,如下图。这是因为叉叔的基本数据中并没有攻击数据,意思就是叉叔其实一直在攻击只是因为没有相应的数据,所以无法造成伤害。所以没有攻击数据的生物将不遵守攻击行为。


              IP属地:浙江7楼2018-09-27 22:56
              收起回复
                所以lz加油啊,我希望我能被打脸
                我之所以认为纯小兵行为逻辑做不出来,就是因为只靠移动来触发机制有个明显缺陷,就是因为距离问题(最近优先),导致没法做出长距离,可重复使用的,不怕干扰的“导线”,希望lz能给出克服这个问题的办法


                IP属地:山东来自iPhone客户端8楼2018-09-27 23:57
                回复(2)
                  2025-06-25 04:33:54
                  广告
                  非常棒


                  IP属地:澳大利亚来自Android客户端10楼2018-09-28 14:45
                  回复
                    由于或门和非门还没讲,在这里先讲一下
                    先是或门

                    2-1

                    2-2
                    或门其实在这里最简单,所有的士兵都只需要启用追踪行为,并且不用开启攻击(这样做出的结构更小,或者将小兵攻击伤害改为负值,详情前查询《【突破性技术】地图编辑器设置负值的研究》)。然后合理设置小兵追踪行为距离和速度的数值。如图2-1所示。
                    合理设置距离的作用:如图2-1可以看到三个相互相交的圆形,这是我用来表示小兵行为逻辑中的距离所做的标识(这个范围是三维的,所以完整的范围因该是一个球体。),小兵会扫这个范围内最近的生物单位执行自身所设置的行为逻辑,所以这个范围决定着你的门的大小。
                    图2-1是或门未进行运算时,图2-2是或门输入1时,第一个士兵离开输出区域,此时输出。这里方块的位移需要用到的是世界位置,而不是默认的全局方向,这样不管有多少输入,阻挡输出小兵的方块都只会在两个固定的位置间移动。


                    IP属地:浙江11楼2018-09-28 16:08
                    回复
                      接下来是非门,
                      最简单非门,就是直接用与门然后输出数值上做手脚(没有灵魂),所以我重新又弄了一遍。
                      3-1

                      3-2

                      3-3

                      3-4
                      这里实现的是人列与非门,取反的体现就是由原来的出区域输出变为进区域输出。由图3-1可见第二个士兵在追踪第一个士兵,这是用于复位的装置。输入和与门差不多,主要的区别在于,输出士兵(图中第二个士兵)的行为逻辑,由撤退变为追踪,当输出时,输出士兵与第一个士兵之间的距离大于它与第三个士兵之间的距离,此时就近原则,输出士兵将仇恨转向第三个士兵,如图3-4。当复位时,此时输出士兵与第一个士兵之间的距离小于它与第三个士兵之间的距离,此时再次就近原则。士兵离开输出区域没有输出或者输出0,如图3-1。


                      IP属地:浙江12楼2018-09-28 17:27
                      回复
                        现在开始讲解,我研究的人列导线。

                        4-1

                        4-2

                        4-3

                        4-4
                        目前我采用的是轨道式的信号线,这种导线的原理是,让士兵成为一个个电信号,如图4-2(最上面的士兵,与下面的士兵的作用都是电信号,中间为诱导。)
                        首先将作为信号的士兵设置合理距离和合理的速度(速度由轨道长度决定,越长的轨道需要越大的速度,信号传输速度越快),如图4-4。当三棱柱挡板降下时士兵会以设定好的速度向目标冲去,但是由于自己的速度过快,士兵会沿着轨道急速飞驰,当士兵运动到到范围内没有目标时(即使有目标,士兵也可能因为高速运动摔倒,在摔倒后任何生物都将不服从行为逻辑,只受到牛1定律的支配),这时依靠惯性沿着轨道前行。
                        这个导向的两端设计是相同的,三棱柱有两个作用,在不需要信号传输时是作为电信号的挡板,在传输信号时,作为接受,高速滑行的士兵将从这个斜坡滑进槽中(槽需要封顶),实现双向传输。
                        注意事项,士兵血量一定要厚,因为此过程中必存在撞击,然而这种高速撞击会对产生伤害。我设置的时900000,重量为10。(目前没有发现重量会对滑行有什么影响)
                        三棱柱是根据士兵的碰撞箱来定的(这里用叉叔的碰撞箱来代替),站立的士兵过高无法越出1米高的缝隙,而在滑行中的士兵时躺倒的,这种状态下正好穿过正好穿过缝隙


                        IP属地:浙江13楼2018-09-28 18:17
                        收起回复
                          所以我在这里有个问题想问lz,除了小兵的behavior逻辑,还使用了其他种类的逻辑了吗


                          IP属地:山东来自iPhone客户端14楼2018-09-28 18:47
                          回复(2)