新人疑问,请火星人指点
2dfm吧
全部回复
仅看楼主
level 11
cryo0_0 楼主
        根据本吧教材试着制作一个格斗游戏的习作,遇到一个问题,初学者,问题可能有点小白,还望
火星人指点下。
       人物:狼之烙印-Terry
       背景:火星人提供的3D街霸背景
       问题:(1P蓝色,2P红色)
              1P在左侧墙壁处,无论2P后退、普通站立、下蹲时,1P都可以跳到2P后面,而在右侧墙壁处却正常。
              2P在右侧墙壁处,可以跳到1P后面,在左侧墙壁处正常。
              以上异常出现于所有人物,包括相同人物出场,不同人物出场。
                 如图:
       
       相关情况:人物的碰撞区域设定都是以中心线对称的。
                 如图:
2010年01月21日 13点01分 1
level 12
那个场景左右不对称,所以两侧在画面卷动后可能会有差异。
我制作的时候只是大概地摆了一下图片,不是很精确,所以左右可能不太对称。
2010年01月21日 18点01分 2
level 9
我试验了一下,好像1p处于左版边时2p无法跳入左版边的角落,但2p处于左版边时1p能跳入左版边的角落。2p处于右版边时1p无法跳入右版边的角落,但1p处于右版边时2p能跳入右版边的角落。貌似都能跳回自己所在一侧的角落却无法跳入对方一侧的角落,这可能是2dfm默认的设定。貌似和场景是否对称无关。
不过双方还是有点差别,当1p处于左角落中时,2p跳至1p头上,1p会自动转身,而2p处于右角落中时,1p跳至2p头上,2p不会转身。
看来对双方来说,默认的规则还是不太公平的。

2010年01月21日 20点01分 3
level 9
解决双方的守角优势似乎不难,这个转身的问题确实让我有点头疼。
2010年01月21日 20点01分 4
level 9
哦,转身不影响防御方向。。。那还是公平的。不过看着心里不舒服。
守角优势的解决办法(仅供参考):
1--如果不想让任何人跳入角落(屏蔽双方回到自己角落的特权),可以在所有角色前跳技能末尾添加[完],之后在[完]后面添加[移]:x=-8其他为0,“相加”。在这个[移]之后添加[色](添加默认的即可,不需修改)。
然后在前跳技能最前面添加[调]调用[完]之后的那个[移]。
然后在这个[调]之前添加[跳]跳转到[调]之后的第一个步骤。
最后在所有步骤之前添加[招]:碰到墙壁时,跳转到[调]。
这样做的效果是双方如果有一方在角落,则对方永远没法跳到他身后去。
2--如果想要双方都能跳入角落(都获得进入角落特权),可以这样做:
平移1:[移]x=+40.00代入[防]自设一个防御范围(和蹲着一样)[图]站立或者蹲着的图,停留时间2
被调用招式1:[变1]任务变量I 代入 X坐标,[变2]任务变量I 大于1190时 跳转到{平移1}0步骤,[变3]任务变量I 小于90时 跳转到{平移1}0步骤。[色]直接添加的。
平移2:[移]x=-40.00代入[防]自设一个防御范围(和蹲着一样)[图]站立或者蹲着的图,停留时间2
被调用招式2:[变1]任务变量I 代入 X坐标,[变2]任务变量I 大于1190时 跳转到{平移2}0步骤,[变3]任务变量I 小于90时 跳转到{平移2}0步骤。[色]直接添加的。
然后在{普通站立}{后退}{下蹲}{蹲着}{从下蹲站起}{蹲着前进}{蹲着后退}技能开头添加[调]调用{被调用招式1}
然后在{前进}{站立转身}{蹲着转身}技能开头添加[调]调用{被调用招式2}
效果:角色在角落中的时候总会被版边推开一段距离,对方只要跳过其头顶,就100%能进入角落。
经过上述处理后,角色的角落性能就比较统一了。
不同游戏中可以选用上述两种方法来实现“我方一定不能挤进角落”和“一定能让对手挤进角落”两种游戏规则。或者使用游戏默认的“我方优先占据自己方向的角落”的规则也可以。
对于不同角色,也可以选择给他们设定具有上述3种不同的性能,也算是角色特技。

2010年01月22日 00点01分 5
level 9
平移1,2和 被调用招式1,2都是新建的技能。
2010年01月22日 01点01分 6
level 11
cryo0_0 楼主
    赞!
    首先,十分感谢火星人对我的小白问题如此详尽的解答,待我晚上参看吧主的分析做下实验,然后回来回复结果。
2010年01月22日 11点01分 7
level 4
借楼主帖子试试签名图
2010年01月22日 12点01分 8
level 11
cryo0_0 楼主
     首先,如吧主3楼所述,我们在3D街霸场景中的现象是完全相符的。
    1.反复查看“狼之烙印”原作的慢动作,感觉不像是通过碰壁后做新的移动处理,应该还是角色防御区碰撞后,系统做出了防御区中心坐标位置判定,判定1P是在2P的前面还是后面。
     因此,屏蔽吧主所说的“入角落特权”的问题有了一种解决方法,将【前跳跃】脚本的防御区域由原来的以Y轴对称,向左调,即让X轴值为负值即可解决,而防御区的宽窄随便。我目前将X轴值调至-1,问题即解决了。
      防御区设置如下图:
     
      然而,这并没有证明我的思路是完全
正确的
,因为,反其道,我并没有实现吧主所说的让1P和2P都具备“入角落特权”的效果,想实现的话,防御区需要想X轴正向便宜大于防御区本身宽度的量,才能实现,即如上图的话,X轴只需为
+3
0以上。但我对这个功能没有需要,所以暂放后面。
      应该与人物碰壁后,X轴坐标达到0或最大值,不在计数有关。目前对2DFM的了解太少,所以没啥思路,希望吧主会有更正确的解释或更简单的方法。
2010年01月22日 15点01分 9
level 12
我就用这个ID吧。
2dfm中,角色站在角落时,不是依靠碰撞区域来决定角色距离墙壁多远的,而是有个默认的中心轴与墙的固定距离。
一般格斗游戏中,为了避免计算机在角色中轴坐标重合时不知如何判定前后朝向,都有个默认的设置:对1p横坐标-1,或对2p横坐标+1(不同游戏可能设置不同)。
那么,1p与2p同时在最左侧时,系统总认为1p更加靠左,同样双方都在最右时,系统认定2p更靠右。

2010年01月22日 16点01分 11
level 11
cryo0_0 楼主
下面做了实验,验证了为什么1P和1P在左墙角会转身,而在右墙角不转身。
    一. 去掉角色原地站立和前跳的所有方区域。
    二. 将1P、2P都移动到做墙角碰壁,此时1P和2P处于碰壁、位置重合、都面向左侧。如下图:
       
    三. 同理,移动1P和2P到右墙壁碰壁处,则1P和2P处于,碰壁、重合、面向左侧。如下图:
       
      看来,这正如火星人所说,这是系统默认的。从上面三步看,系统是默认了1P和2P在图片脚本中心坐标重合是,角色都是面向左侧的,估计在任何位置,只要1P和2P的图片脚本X轴的中心点重合,角色就都面向左侧了。
      这就是为什么在左测墙角有“回头现象”,而右侧墙角正常了。

2010年01月22日 16点01分 12
level 12
我估计守角优势可能就是这么来的。
2010年01月22日 16点01分 13
level 11
cryo0_0 楼主
    呵呵,感谢火星人11楼的正解,应该是基础知识,但我确实不知道,见识了!
    帖子里经常有同音错别字,汗一个,希望没影响吧主理解意思。
    深夜讨饶,我等的残酷,令人发指,吧主的热诚令人感动,催人奶下!
    赞!
2010年01月22日 17点01分 14
level 11
cryo0_0 楼主
    回顾了下,火星人5楼的守角优势的解决办法1.
    理解了吧主这个方法是同时考虑了屏蔽“入角落特权”和削弱“左墙角回头”。
    但是,“左墙角回头”只是因为时间缩短了而从效果上明显削弱了,但还没有根除,闹眼睛。
    请问火星人,有没有根除的思路?
2010年01月23日 06点01分 15
level 9
目前尚未找到解决转身问题的有效办法,这个问题确实很让人头疼。
2010年01月23日 07点01分 16
level 9
或许可以在转身技能中添加脚本判断角色坐标位置,当角色处于小于70的坐标时,把转身技能跳转到站立或者蹲着去。不过我还没有做实验,不保证有效。
2010年01月23日 07点01分 17
level 11
cryo0_0 楼主
     嗯,17楼的想法还没实验,
     不过想了下,即使行得通,那也需要从 站立动画 到 转身动画 再回 站立动画,因为动画都是多张图片形成的,所以,还会造成人物有闪动。
     这个问题我想了几个思路,前几个因为系统默认的规定都行不通,还有一个想法感觉应该有戏,不过,目前对脚本的应用还不太熟,不会实现。
     先说下这个想法,吧主如果认为可行的话,能否帮忙编写测试下。
     “屏蔽回头”的想法:
     让向"前跳跃"的动作永远无法碰撞墙壁。这样位于墙角时,空中人物的中心坐标永远不会在地面人物的背后,就无法让地面人物回头了。
     方法:
     用单独脚本做一透明物体道具,然后在'向前跳跃'开端插入使用,
     透明物体具体位置,保证在屏幕外端(比如Y轴位置设为1000)。X轴向位置,要放在跳跃动画前方一段距离,保证透明物体碰壁时,地面上的人物刚好还没回头。
     当透明物体碰壁时,调用屏蔽X运动的移动脚本给“向前跳跃”,让'向前跳跃'垂直落下,剩下的就是“屏蔽入角特权”在起作用了。
     不知道,我表达明白了没有,配个示意图。
图画反了,应该朝向左侧墙壁,右侧墙壁不存在“回头问题”,但就是这个意思。
2010年01月23日 14点01分 18
level 11
cryo0_0 楼主
   再提供些信息给吧主,是做些小实验时体会到的,兴许有用,不过吧主应该都知道了。
1. 系统规定的墙壁,不是左右两侧最终的墙壁,而是显示区的左右两边。
2. 人物在墙壁处如果没有朝向墙壁的X轴向的运动是不会碰壁的,比如原地站立、蹲在墙角,不算碰壁。
3. 2P在两侧墙壁处,通过前行推挤1P,1P会被向推挤后退平移几个像素直到碰壁生效,2P停止前行推挤,1P会自动平移回来,此时碰壁消除。
   但反过来,在墙角处1P推挤2P,2P不移动(视觉上看不出来),但可以触发碰壁,1P停止推挤,2P的碰壁消除。
2010年01月23日 15点01分 19
level 11
cryo0_0 楼主
    17楼中,“或许可以在转身技能中添加脚本判断角色坐标位置”,这个需要用什么脚本可以判断角色位置呢?
    教材那部分有介绍,我想先了解下,应该很有用。
2010年01月23日 16点01分 20
level 9
碰壁判定取决于角色中轴与墙壁的距离为0,飞行道具或者防御区域都不会触发碰壁。
没有水平移动时不触发碰壁。
可以给站在墙角的角色同上添加阻挡区域来阻止对手跳到其身后,但缺陷是会影响添加阻挡区的角色自身的向上跳跃轨迹(不是严格向上,而是有向前推角色的分量,也就是说原地向上跳跃将会稍微带有前倾角度)。
2010年01月23日 17点01分 21
1 2 3 4 5 尾页