2017-10-07 9 views
0

私はユニティのウェブサイト上で見つけたスペースシューティングチュートリアルで遊んでいます。私はある程度のポイントに達すると表示されるボスの敵を作ろうとしています。しかし、私はボスを画面の中央に移動させる方法を理解することはできません。私は他の敵のために作ったムーバーのスクリプトとは関係があると思う。他の敵は画面の一番下まで移動します。どのように私は画面上の半分の動きを持っているボスムーバーのスクリプトを作ることができますか?ユニティ - オブジェクトを移動させて停止するにはどうすればよいですか?

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

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

@Kenneth、あなたは答えを受け入れることができますあなたの問題。 – Programmer

+0

本当にありがとう –

答えて

0

あなたは以下を使用して、オブジェクトを停止することができます。

rb.velocity = Vector3.zeroを。私は次のように剛体のMovePosition機能を使用することになり

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

:それはあなたが以下のような何かを行うことができますテストする

彼らは解決した場合

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); 
} 
関連する問題