2017-09-08 7 views
0

スクリプトが添付されているカメラは、上から地形の上の地形の見た目が上です。そして、今、私はマウスをクリックすると、リストポイントを取得しています。しかし今、私はマウスをクリックすると丘のような地形の高い場所を含む地形上の位置がわかります。地形をマウスでクリックするにはどうすればよいですか?

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class GetMousePosition : MonoBehaviour 
{ 
    private bool isMousePressed; 
    private List<Vector3> pointsList; 
    private Vector3 mousePos; 

    // Use this for initialization 
    void Start() 
    { 
     isMousePressed = false; 
     pointsList = new List<Vector3>(); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     if (Input.GetMouseButtonDown(0)) 
     { 
      isMousePressed = true; 
      pointsList.RemoveRange(0, pointsList.Count); 
     } 
     else if (Input.GetMouseButtonUp(0)) 
     { 
      isMousePressed = false; 
     } 

     if (isMousePressed) 
     {    
      mousePos = GetComponent<Camera>().ScreenToWorldPoint(Input.mousePosition); 
      mousePos.z = 0; 
      if (!pointsList.Contains(mousePos)) 
      { 
       pointsList.Add(mousePos); 
      } 
     } 
    } 
} 

Top View Camera

+3

検索する用語は*レイキャスト*です。 – Octopus

+0

ありがとうございました。 –

答えて

1

あなたはRaycastでこれを行うだろう、あなたは地形にカメラ位置からの光線をキャストして、あなたが戻って取得データを使用して、希望するすべての詳細を取得することができます。

あなたがリストにヒットポイントを追加したいのであれば、あなたの場合には、あなたはPhysics.Raycastはあなたを許す多くのオーバーロードがあることを、上記の例で注意しなければならない。この

float distance = 100f; 

// Update is called once per frame 
void Update() 
{ 
    if (Input.GetMouseButtonDown(0)) 
    { 
     isMousePressed = true; 
     pointsList.RemoveRange(0, pointsList.Count); 
    } 
    else if (Input.GetMouseButtonUp(0)) 
    { 
     isMousePressed = false; 
    } 

    if (isMousePressed) 
    {    
     Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); 
     RaycastHit hit; 

     if (Physics.Raycast (ray, out hit, distance)) 
     { 
      if(!pointsList.Contains(hit.point) 
      { 
       pointsList.Add(hit.point); 
      }   
     }  
    } 
} 

ような何かをするだろうレイがどのように発生するかをカスタマイズできます。ヒットとレイの変数を使用して、ヒットした特定のコライダーやレイの起源の世界の位置など、より多くの情報を取得することもできます。詳細については、Unity APIのマニュアルを参照してくださいPhysics Raycastのページをご覧ください。

レイキャスティングについて詳しく知りたい場合は、詳細についてはofficial Unity videoをご覧ください。ゲーム開発では多くのことを使用するため、できるだけ多くのことを学ぶ価値があります前進する前にそれについて。

関連する問題