【发布时间】:2019-03-28 13:56:26
【问题描述】:
我正在我的游戏中制作建筑机制,我希望能够清除地图周围的某些物体(树木、其他装饰),这样我就有了建造空间。我尝试使用光线投射来查找正在单击的对象并销毁它,但这不起作用。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectDestroy : MonoBehaviour {
// Start is called before the first frame update
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0)) {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
Debug.Log (Input.mousePosition);
if (Physics.Raycast (ray, out hit)) {
if (hit.collider.gameObject == gameObject) Destroy (gameObject);
}
}
}
}
【问题讨论】:
-
确保您已将 3D 对撞机附加到游戏对象。
-
@Iggy 一切都有对撞机
-
您是否已经测试过 onMouseDown() 方法?如果您在对象上有一个碰撞器并附加了脚本,这也应该通过在 onMouseDown() 方法中调用 Destroy() 来工作。
-
" if (hit.collider.gameObject == gameObject) 销毁 (gameObject);"将检查具有此代码的对象是否与被单击的对象相同,这真的是您想要的吗?
标签: unity3d collision-detection