我正在玩团结网站上发现的太空射击教程,而且当我达到一定数量的分数时,我试图让一个老板的敌人出现。但我无法弄清楚如何让老板移动到屏幕的中心。我认为这与我为其他敌人制作的动议剧本有关。其他敌人一直移动到屏幕的底部。我怎样才能制作一个老板移动脚本,让它在屏幕上移动一半?
public class Mover : MonoBehaviour {
public float speed;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.velocity = transform.forward * speed;
}
}
答案 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;
}
}