rigidbody.MovePosition不会工作

时间:2015-05-01 02:30:31

标签: unity3d unityscript

错误是

Unity.Engine.Component does not contain a definition for MovePosition 
and no extension method MovePosition accepting a first argument of type  
Unity.engine.Component could be found.

此功能旨在延迟我的射弹从枪射击后的行进时间。

 public class Projetil2 : MonoBehaviour {

// Use this for initialization
void FixedUpdate()
{
    rigidbody.MovePosition(transform.position + transform.rotation     
      *Time.deltaTime);
}
}

2 个答案:

答案 0 :(得分:0)

transform.position + transform.rotation ?

transform.position是Vector3,transform.rotation是一个四元数。您不能将Vector 3和Quaternion一起添加。

你可以这样做

rigidbody.MovePosition(transform.position + transform.forward * Time.deltaTime);

此外,您无法再直接在Unity 5中访问刚体。您需要像这样使用getComponent

Rigidbody rbd = GetComponent<Rigidbody> ();
rbd.MovePosition(transform.position + transform.forward * Time.deltaTime);

答案 1 :(得分:0)

基本上,要使用任何组件的方法,您应该具有该对象的引用。所以首先相应地声明一个RigidBody / RigidBody2D对象。

 RigidBody rBody;
    void Awake()
    {
     rBody = GetComponent<RigidBody>();
    }

// 注意:如果您希望对象以可靠的可预测方式移动但仍然允许物理交互,请使用MovePosition(如果您希望它不受物理影响,则将对象设置为运动学但是仍然能够影响其他事情,如果你想让两个物体都能被物理作用,取消选中运动学。如果你想移动你的物体但让物理处理更精细的细节,就加一个力。

void FixedUpdate()
{
    rBody.MovePosition(transform.position + transform.rotation     
      *Time.deltaTime);
}