C# 在unity3d中使用touchphase时rigidbody.moveposition不工作
我正在为手机制作一个3d游戏,所以我添加了一个脚本,通过用一个手指拖动来移动玩家。所以我尝试用不同的方法让他与其他对象碰撞,但我没能让他碰撞。那么如何让他与物体碰撞呢C# 在unity3d中使用touchphase时rigidbody.moveposition不工作,c#,unity3d,3d,rigid-bodies,C#,Unity3d,3d,Rigid Bodies,我正在为手机制作一个3d游戏,所以我添加了一个脚本,通过用一个手指拖动来移动玩家。所以我尝试用不同的方法让他与其他对象碰撞,但我没能让他碰撞。那么如何让他与物体碰撞呢 void Update() { if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Moved) { ta
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved)
{
targetPosition += Vector3.right * touch.deltaPosition.x * speedmodifier;
targetPosition += Vector3.forward * touch.deltaPosition.y * speedmodifier;
}
}
}
private void FixedUpdate()
{
rb.MovePosition(targetPosition);
}
不能使用Rigidbody.MovePosition。刚体.MovePosition类似于Transform.Translate。它覆盖任何碰撞。您可以使用的另一种方法是添加一些力(Rigidbody.AddForce),然后对最大速度进行限制。这对我很管用。出于好奇,当你禁用touchphase时,它会发生碰撞吗?我不相信,但仍然。。。无论如何,您的问题的答案是不要使用Rigidbody.MovePosition,因为它会覆盖任何碰撞检测。如何做到这一点,因为我使用了两种不同的方法使用rb.addforce,但我的播放器停止了移动。请使用一个称为“最大速度”的变量。然后利用变换计算动量。之后,使用一个函数停止addforce。