我正在统一制作游戏。我有一个坦克,它有一个刚体。我正在使用transform.translate将其移动。当它被镜头击中时,它会向后移动。如果使用操纵杆将其向前移动,它将以降低的速度移动。如果松开操纵杆,它将继续向后移动。 请帮忙。
答案 0 :(得分:1)
问题不多,但我可以肯定您正在使用transform.translate来移动角色(就像您写的一样),但是您有一个附着在GameObject上的刚体,它使用物理原理。
因此,当您的GameObject被射弹击中时,物理原理会将其向后移动,并且您将使用inputMovement“传送”该GameObject,但这不会影响物理原理。
如果您不想使用物理学,而只对碰撞感兴趣,则应在“刚体”组件上禁用物理学模拟。
因此,将刚体中的Is Kinematic
checkbox设置为true。
如果感兴趣的话,影响物理的值就是刚体的速度:
GetComponent<Rigidbody>().velocity
您需要在一个碰撞对象上放置一个刚体,我本人将其放置在播放器上,但使用速度来处理运动以确保它与碰撞物理兼容。当使用transform.translate时,角色实际上将每帧传送X个单位,从而给人一种运动的幻觉,但实际上并不是身体的运动。这可以使诸如通过墙壁传送等事情发生。
因此,我告诉您如何解决您的紧迫问题,我的建议是您重新编写运动逻辑,改用Rigidbody.velocity。您的动作似乎很简单,因此实际上只是替换您的transform.translate:
rb.velocity = joystickInput * speed;