我遇到的问题是,当我应用速度时,我的物体不会移动。
Rigidbody2D Rigidb;
float MovingSpeed = 5f;
void Awake()
{
Rigidb = GetComponent<Rigidbody2D>();
}
void MoveObject(Vector3 destination)
{
Vector3 dirVector = destination - transform.position;
bool x = false, y = false;
if (dirVector.x < 0)
{
x = true;
dirVector.x = -dirVector.x;
}
if (dirVector.y < 0)
{
y = true;
dirVector.y = -dirVector.y;
}
if (dirVector.x > dirVector.y)
{
dirVector = dirVector / dirVector.x;
}
else
{
dirVector = dirVector / dirVector.y;
}
if ((x && dirVector.x > 0) || (!x && dirVector.x < 0)) dirVector.x = -dirVector.x;
if ((y && dirVector.y > 0) || (!y && dirVector.y < 0)) dirVector.y = -dirVector.y;
Rigidb.velocity = new Vector2(dirVector.x * MovingSpeed, dirVector.y * MovingSpeed);
}
在我的测试用例中,速度最终为(0.0,5.0),但即使它不会移动。它不是运动学的,x和y运动也不会被冻结。
答案 0 :(得分:1)
确保你的刚体isKinematic为false,并且位置约束不会冻结到x,y,z轴