2017-12-26 12 views
0

私は現在、3D世界でプレーヤー(球体)を移動するためにマウス入力を使用しています。私はレイキャストでhit.pointの座標を使ってこれをやっています。これは私のゲームがうまくいくようにする方法ですが、それは3Dゲームなので、マウスの座標を使ってプレーヤーを動かすと正しく整列しません。これは、プレーヤーが3dであり、マウス座標が2dであるためです。ここでUnity:Vector3.MoveTowards()を使用してマウスを3Dプレーヤーの中央に配置するにはどうすればいいですか?

は私のコードです:

public float speed; 
public GameObject player; 

private Ray ray; 
private RaycastHit hit; 
private Vector3 mousePos; 

void Start() 
{ 

} 

void FixedUpdate() 
{ 
    ray = Camera.main.ScreenPointToRay(Input.mousePosition); 

    if(Physics.Raycast(ray, out hit)) 
    { 
     mousePos = new Vector3(hit.point.x, /*Insert Code*/, hit.point.z); 

     if(mousePos != player.transform.position) 
     { 
      player.transform.position = Vector3.MoveTowards(player.transform.position, mousePos, speed * Time.deltaTime); 
     } 
    } 
} 

私の質問はこれです:私は地上1.3fでプレーヤーを持っている場合ので、マウスはプレーヤーの中央にどのように私はVector3.MoveTowardsを操作することができ、

プレーヤーの身長に影響を与えずに(1.3f)?

私はplayer.transform.position.yを使用しようとしましたが、マウスをプレイヤーの直下に置いています(xとzの値は機能しましたが、y値は使用しませんでした)。

私も、hit.point.yを試しましたが、プレーヤーの高さ(1.3f)よりも大きな値を得ました。

+0

ユニティ/モノフォーラムでは、ユニティに関する質問が一般的によく尋ねられます。このフォーラムはまだMSDNの方が優れていますが、遠くはありません。 – Christopher

+0

@Christopher私は通常、団結についての質問のためにここに行きます。私も試してみるよ。 –

+0

'hit.point.y'は、raycastがプレーヤーオブジェクトに当たっているので、おそらくあなたが望む値を返していないでしょう。プレイヤーオブジェクトをマウスレイキャストから除外するにはレイレイマスクを使用する必要があります。 – Draco18s

答えて

0

これは私の問題を解決する最善の方法ではないかもしれませんが、今解決しています。私は1.3fのy値を持つプレーンを作成し、それをプレイヤーオブジェクトに挿入しました。私は、オブジェクトを不可視にしました。今、レイキャストは地面の代わりにそのオブジェクトを打つでしょう。

関連する問題