注册 登录
  • 动态
  • 推荐
  • 游戏
  • 分享链接 new
  • 回答问题
  • 发现
  • 野蔷薇
  • 视频

0kk470 咸鱼

回答了问题 更新于 2021-10-10 12:39:01

U3D怎么实现复杂的移动?

1. 逆风顺风这种可以定义一个人物移动速度变量,然后通过比较风向和人物的移动方向的夹角来计算移动速度的增加和衰减。

2.冲刺击退这种你可以定义一个单位标记状态,这种强位移状态下应该重置移动相关的数据,忽略掉玩家的输入控制,然后用协程或者状态机Update来实现位移相关的计算。如果与风向关联的话那么你还要制定风的强度和方向影响位移的规则(比如顺风增加位移量,逆风减少位移量)。一般来说冲刺的方向与移动方向、人物朝向相同;击退的方向一般是攻击者的朝向或者飞行碰撞物(子弹之类)的速度方向,如果是爆炸这种击退那么是中心点指向范围内所有单位的向量方向。

这里我给你贴一段我自己游戏的强位移实现,可以参考下

da3e2cf4fc6c5500352af2fe83a54c86.jpg

效果

d74d0df898d35f274dbda73d69bf61c9.gif

这个算是比较简单的位移了,像被击浮空、重力漩涡、爆炸、减速区、落水漂浮、降落伞下落等也是类似的实现机制,一般都是通过改变单位标记、速度和位移来实现

3. 加减速过程其实就是手柄摇杆的灵敏度机制,松开摇杆减速的时候Axis轴值不会立即恢复到0,而是逐渐衰减,加速同理。这点Unity原生的InputModule是支持的。如果你要想自己控制的话可以写个wrapper类在Update里去控制轴值。

著作权归作者所有。商业转载请联系作者获得授权,非商业转载务必附上原作者名称,注明来自「奶牛关」并给出原文链接。不得以任何形式演绎或修改。

{{answer_voters_count}}人赞同

...

{{question_follower_count}} 个玩家关注

...

目录

    评论 0

    登录奶牛关账号即可参与讨论
    登录 / 注册

    0kk470 的更多回答

    查看所有回答

    该问题的其他回答