C# 统一:鼠标点击框碰撞器

C# 统一:鼠标点击框碰撞器,c#,unity3d,C#,Unity3d,我有一个很快的问题,看起来很简单,但我不能动脑。我试着用鼠标点击一扇门,然后它就会打开。所以基本上,鼠标点击后会播放一个动画,这在我的项目中已经开始工作了,但不幸的是,无论我在哪里点击,门都会打开,但显然只有在我点击门时门才会打开。我在门周围制作了一个盒子碰撞器,并将其设置为触发,但它并没有解决我的问题 有人能帮忙吗?我会非常感激的 这是我目前的代码: using System.Collections; using System.Collections.Generic; using UnityE

我有一个很快的问题,看起来很简单,但我不能动脑。我试着用鼠标点击一扇门,然后它就会打开。所以基本上,鼠标点击后会播放一个动画,这在我的项目中已经开始工作了,但不幸的是,无论我在哪里点击,门都会打开,但显然只有在我点击门时门才会打开。我在门周围制作了一个盒子碰撞器,并将其设置为触发,但它并没有解决我的问题

有人能帮忙吗?我会非常感激的

这是我目前的代码:

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

public class ScriptTor : MonoBehaviour
{
  private void Update()
  {
      if(Input.GetMouseButtonDown(0))
      {
          GetComponent<Animator>().SetTrigger("Tor");
      }
  }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类脚本编写器:MonoBehavior
{
私有void更新()
{
if(Input.GetMouseButtonDown(0))
{
GetComponent().SetTrigger(“Tor”);
}
}
}

输入。GetMouseButtonDown(0)
不会检查您当前是否正在单击门,只要在游戏运行时单击(无论在窗口的何处),就会被触发


我建议您查看此线程,这意味着使用光线投射

如果您有3D场景,可能需要使用光线投射: 试一试

if(Input.GetMouseButtonDown(0))
{
雷卡斯特击中;
Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
如果(物理.光线投射(光线,出击))
{
//检查hit.transform是否在门上,
如果(…)GetComponent().SetTrigger(“Tor”);
}
}

您需要实际检查单击过程中的鼠标位置是否在碰撞器内,例如:通过执行光线投射谢谢,我对unity非常陌生,我不太确定如何进行光线投射检查…请使用正确的标记。。。是或更好是早期Unity版本中使用的类似JavaScript风格的自定义语言,现在已经被长期弃用。。。您的代码显然是
c #
谢谢,但无论我点击哪里,它都会打开大门,我不太确定我做错了什么。门上有一个对撞机婴儿,勾号正在触发。我不确定我必须在最后一个if语句中输入什么?如果门的名称是“门”,您可以使用if(hit.transform.gameObject.name==“门”)非常感谢,它正在工作。。。
if(Input.GetMouseButtonDown(0))
{
    RaycastHit hit;
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if (Physics.Raycast(ray, out hit))
    {
        // Check if hit.transform is door, 
        if(...) GetComponent<Animator>().SetTrigger("Tor");
    }
}