Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 光线投射的问题_C#_Unity3d_Unity5 - Fatal编程技术网

C# 光线投射的问题

C# 光线投射的问题,c#,unity3d,unity5,C#,Unity3d,Unity5,我正在为我的游戏制作食物系统 我想让它使用一个光线投射,这样你就可以把它捡起来,但我无法让它工作。当我单击带有标记的对象时,它不起作用 public Text FoodUI; public int FoodAmount; public float Distance; public GameObject Hands; void Start() { FoodUI.text = "Food: " + FoodAmount; } void FixedUpdate() { Ray ray

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

我想让它使用一个
光线投射
,这样你就可以把它捡起来,但我无法让它工作。当我单击带有标记的对象时,它不起作用

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;
            }
        }
    }
}

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

您缺少了
Physical.raycast
if语句的一个大括号。不要认为是这样,我将尝试添加
Debug.log
以检查光线投射是否有效,例如,在光线投射之后(以及标记检查之前)一个大括号标签检查中有一个。检查器中是否更新了
FoodAmount
?你不能改变<代码>文本<代码>组件(<代码> FooIu.Text < /代码>),这样你就无法更新。@ FATHATKALE,如果你能找到一个好的解决你问题的方法,考虑把你自己的答案发布到你的问题。如果你有更多与原始问题无关的问题,请在网站上发布一个新问题,但前提是你已经完成了必要的研究,并且确定自己无法解决问题。