簡體   English   中英

如何在地形上單擊鼠標位置?

[英]How can i get mouse position click on terrain?

腳本所連接的攝像機位於高處,從頂部看地形。 現在,當我單擊鼠標時,我會得到列表點。 但是現在我想讓我在單擊鼠標時將它賦予我在地形上的位置,包括丘陵之類的地形高地。

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);
            }
        }
    }
}

頂視圖相機

您可以使用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); 
             }           
         }    
    }
}

在上面的示例中應注意,Physics.Raycast具有許多重載,可讓您自定義射線的發射方式。 您還可以使用hit和ray變量獲取更多信息,例如其命中的特定對撞機以及射線所處的世界位置,以及有關如何執行此操作的更多信息,請參見Unity API文檔。 物理Raycast的頁面。

如果您想了解有關Raycasting的更多信息,建議您觀看有關該主題的Unity官方視頻 ,該視頻將進行更詳細的介紹,您將在游戲開發中大量使用它,因此值得您盡可能多地學習。在繼續前進之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM