处理鼠标点击游戏对象 - Unity3d
Handle mouse click on a gameobject - Unity3d
我有一个小型城市网格和一个公寓 3d 模型。我将网格添加到我的场景并将 3d 模型放置在网格上。
我尝试只在 3d 模型上处理鼠标点击。我使用下面的代码。但是我点击屏幕上的任何地方,它设置为 sound = true
我为 3d 模型游戏对象添加了一个网格碰撞器。
if (Input.GetMouseButtonDown (0)) {
Plane p = new Plane (Camera.main.transform.forward , transform.position);
Ray r = Camera.main.ScreenPointToRay (Input.mousePosition);
float d;
if(p.Raycast (r, out d)) {
sound = true;
}
我该如何解决?
您可以检查 tag/name 游戏对象。你需要这样使用:
void Update()
{
if (Input.GetMouseButtonDown (0)) {
Plane p = new Plane (Camera.main.transform.forward , transform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
//Choose one of them below!!!
/// Name Comparison
if(hit.collider.gameObject.name.equals("NameOfTheObject")){
///Do Logic
}
//Tag Comparison
if(hit.collider.gameObject.CompareTag("TagOfTheObject")){
///Do Logic
}
}
}
}
我有一个小型城市网格和一个公寓 3d 模型。我将网格添加到我的场景并将 3d 模型放置在网格上。
我尝试只在 3d 模型上处理鼠标点击。我使用下面的代码。但是我点击屏幕上的任何地方,它设置为 sound = true
我为 3d 模型游戏对象添加了一个网格碰撞器。
if (Input.GetMouseButtonDown (0)) {
Plane p = new Plane (Camera.main.transform.forward , transform.position);
Ray r = Camera.main.ScreenPointToRay (Input.mousePosition);
float d;
if(p.Raycast (r, out d)) {
sound = true;
}
我该如何解决?
您可以检查 tag/name 游戏对象。你需要这样使用:
void Update()
{
if (Input.GetMouseButtonDown (0)) {
Plane p = new Plane (Camera.main.transform.forward , transform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
//Choose one of them below!!!
/// Name Comparison
if(hit.collider.gameObject.name.equals("NameOfTheObject")){
///Do Logic
}
//Tag Comparison
if(hit.collider.gameObject.CompareTag("TagOfTheObject")){
///Do Logic
}
}
}
}