将 body 类型设置为动态时角色不会向前移动

Character is not moving foward when setting body type to Dynamic

目前我在使用此代码将角色移动到 x 位置时遇到 1 个问题

     Vector3 temp = transform.position;
     temp.x += forwardSpeed * Time.deltaTime;
     transform.position = temp;

下面是inspector的设置

如果我设置 body 类型为 Dynamic 角色可以上下移动但是如果我设置 body 类型为 Kinematic 角色可以向前移动但是当我点击到屏幕人物会跳出屏幕。

下面是我的源码,希望大家指出我做错了什么

我的来源code

您应该使用 Rigidbody2D.MovePosition 来移动刚体。

Vector3 temp = transform.position;
temp.x += forwardSpeed * Time.deltaTime;

var rb = GetComponent<Rigidbody2D>();
rb.MovePosition(temp);

您也可以使用 rb.position = temp,但 MovePosition() 提供了最好的碰撞检测。


如果这也不起作用,则碰撞器会在向前方向阻挡刚体,从而阻止它向该方向移动。在这种情况下,请检查对象的层次结构,包括其子对象。