错误是
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);
}
}
答案 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);
}