【问题标题】:Problems with raycasting光线投射问题
【发布时间】:2016-10-27 13:49:08
【问题描述】:

我正在为我的游戏制作食物系统。

我希望它使用Raycast,这样你就可以拿起它,但我无法让它工作。当我点击带有标签的对象时,它不起作用。

public Text FoodUI;
public int FoodAmount;
public float Distance;
public GameObject Hands;

void Start()
{
    FoodUI.text = "Food: " + FoodAmount;
}

void FixedUpdate()
{
   Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
   RaycastHit hit;
    if (Input.GetKeyDown(KeyCode.E))
    {
        if (Physics.Raycast(ray, out hit))
        {
            if (hit.collider.tag.Equals("Food"))
            {
                FoodAmount += 40;
            }
        }
    }
}

【问题讨论】:

  • 您缺少 Physics.Raycast if 语句的左大括号。
  • 别以为是这样的人,我会尝试
  • 添加 Debug.Logs 以检查您的光线投射是否有效,例如一个在光线投射之后(和标签检查之前),一个在标签检查中。
  • FoodAmount 是否在检查器中更新?您现在不要更改 text 组件 (FoodUI.text),因此肯定无法更新。
  • @FatihTkale 如果您能够找到解决问题的好方法,请考虑发布您自己的问题答案。如果您还有其他与原始问题无关的问题...在网站上发布一个新问题,但前提是您完成了必要的研究并确定您自己无法解决。

标签: c# unity3d unity5


【解决方案1】:

我建议使用 LayerMasks 来实现您想要做的事情:这样您可以保存性能,同时确保不会对不需要的项目进行射线投射。 另请注意,您可以使用Debug.DrawRay()场景视图中显示您的光线投射。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多