2017-04-10 11 views
0

マウスをクリックして速度を使用してマウスに向かってオブジェクトを移動しようとしていますが、オブジェクトをクリックすると通常は別の方向に移動します。私は基本的に別のプロジェクトのコードをコピーし、そのプロジェクトでは動作します。唯一の違いは、速度を設定するのではなく、もう1つのプロジェクトではAddForceです。これが原因で何がやっているのですか?マウスクリックの方へ移動

using UnityEngine; 
using System.Collections; 

public class ShootBall : MonoBehaviour { 

    public float shootDelay = 0.03f; 
    public GameObject[] balls; 
    bool hasShot = false; 

    Vector3 clickPosition = Vector3.zero; 

    // Update is called once per frame 
    void Update() { 
     if (Input.GetMouseButtonUp(0) && !hasShot) { 
      hasShot = true; 
      Vector3 point = Camera.main.ScreenToWorldPoint(Input.mousePosition); 
      Vector2 direction = point - transform.position; 
      StartCoroutine(Shoot(direction)); 
     } 
    } 

    IEnumerator Shoot(Vector2 direction) { 
     foreach (GameObject ball in balls) { 
      float speed = ball.GetComponent<Ball>().speed; 
      ball.GetComponent<Ball>().rb.velocity = direction.normalized * speed; 
      yield return new WaitForSeconds(shootDelay); 
     } 
    } 
} 

答えて

0

ここではどちらか、方向ベクトルを逆にしてみてください:

Vector2 direction = transform.position - point; 

それともここに:

ball.GetComponent<Ball>().rb.velocity = -direction.normalized * speed; 
+0

それらのどちらもがそれを修正。 –

+0

[方向]が正しいかどうかを確認するには、[Gizmos.DrawLine](https://docs.unity3d.com/ScriptReference/Gizmos.DrawLine.html)を使用してみてください。 – Iggy

+0

実際のボールのボール[0] .transform.postionの代わりにmanagerオブジェクトの 'transform.position'を使っていました。 –

関連する問題