Unity - 如何使对象移动然后停止?

时间:2017-10-07 15:48:30

标签: c# unity3d gameobject

我正在玩团结网站上发现的太空射击教程,而且当我达到一定数量的分数时,我试图让一个老板的敌人出现。但我无法弄清楚如何让老板移动到屏幕的中心。我认为这与我为其他敌人制作的动议剧本有关。其他敌人一直移动到屏幕的底部。我怎样才能制作一个老板移动脚本,让它在屏幕上移动一半?

public class Mover : MonoBehaviour {
public float speed;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
    rb.velocity = transform.forward * speed;
}
}

2 个答案:

答案 0 :(得分:1)

我会使用刚体的MovePosition函数,如下所示:

Vector3 screenCenter ;

void Start()
{
    rb = GetComponent<Rigidbody>();
    screenCenter = Camera.main.ViewportToWorldPoint(new Vector3(0.5,0.5, rb.position.y)); // If I remember right, thte game is a top-down game, right?
}

void FixedUpdate()
{
    Vector3 direction = ( screenCenter - rb.position );
    float distance = Vector3.Distance( screenCenter, rb.position ) ;

    if( distance > Mathf.Epsilon )
        rb.MovePosition(rb.position + speed * direction / distance * Time.deltaTime);
}

答案 1 :(得分:0)

您可以使用以下方法停止对象:

rb.velocity = Vector3.zero;

要测试它,您可以执行以下操作:

   private void Update() {
    if (Input.GetKeyDown(KeyCode.S)) {
        rb.velocity = Vector3.zero;
    }
}