試圖弄清楚如何通過單擊來破壞物件。我試過使用
public void Destroy()
{
if (Input.GetMouseButton(0))
Destroy(GameObject);
}
但要意識到這將破壞腳本附加到的所有游戲物件,而不是我點擊的那個。
uj5u.com熱心網友回復:
試試這個:
public void OnMouseDown() => Destroy(gameObject);
uj5u.com熱心網友回復:
絕對最好的方法是實作 IPointerClick 介面,
using UnityEngine;
using UnityEngine.EventSystems;
public class ClickDestroy : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
GameObject.Destroy(gameObject);
}
}
這適用于 UI 和 3D 物件,只要您的相機具有 PhysicsRaycaster 并且場景中存在 EventSystem
uj5u.com熱心網友回復:
您可以在螢屏上獲取滑鼠位置并從該位置發射光線投射。如果它擊中了一個游戲物件,那么你可以將它傳遞給一個函式來洗掉它。
void Update {
//Check for mouse click
if (Input.GetMouseButton(0))
{
//Create a ray from mouse location
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();
//Check if the ray hit a gameobject, gameobject will likely need a collider
//for this to work
if (Physics.Raycast(ray, out hit))
{
//If the ray hit a gameobject, destroy the gameobject
Destroy(hit.gameobject)
}
}
}
銷毀游戲物件時,請確保指定游戲物件組件,而不是腳本或游戲物件的其他組件。
可以通過在代碼中定義一個攝像頭物件并在檢查器中為其分配一個攝像頭而不是默認為主或統一設定完整的播放器控制元件來改進此代碼(我不記得如何做恐怕我的頭)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477591.html