我正在统一制作游戏。我有一个坦克,有一个僵化的体。我正在使用transform.translate移动它。当它被射击击中时,它会向后移动。如果使用操纵杆将其向前移动,则速度会降低。如果我放开操纵杆,它会继续向后移动。请帮助。
您的问题没有太多要做的事情,但是我很确定您是用transform.translate移动角色(就像您写的那样(,使用物理学。
因此,当您的游戏对象被弹丸击中时,物理学会向后移动它,您将"传送"带有输入的游戏对象,但这不会影响物理。
如果您不想使用物理学,并且只对碰撞感兴趣,则应禁用刚性符合的物理模拟。
因此,请继续,将Is Kinematic
复选框设置在您的刚体中。
,如果有兴趣,影响物理的价值是刚体的速度:
GetComponent<Rigidbody>().velocity
您需要一个碰撞对象上的刚体,我个人将其放在播放器上,但使用速度来处理运动以确保其与碰撞物理学效果很好。使用变换时。翻译您的角色本质上将每个框架传递X单元,给人以运动的幻觉,但实际上并没有进行物理移动。这可以使诸如通过墙壁等传送等的事情发生。
所以我已经告诉过您如何解决您的直接问题,我的建议是,您重写了动作逻辑以使用刚体。您的动作似乎很简单,因此实际上只是替换了您的转换。对此进行翻译:
rb.velocity = joystickInput * speed;