C# 查找角色控制器下方的对象

C# 查找角色控制器下方的对象,c#,object,scripting,unity3d,C#,Object,Scripting,Unity3d,我有一个角色控制器,它以恒定的速度沿z轴移动。我想知道角色控制器下的楼层名称。角色控制器从不与地板碰撞。这是一个平行运动。我使用光线投射在C#中查找地板,使用: 这是一个错误。有更好的解决方案吗?很难说问题出在哪里,但是将此行为附加到角色控制对象将获得光线投射命中的第一个对象的名称 我使用一个倒置的图层蒙版来忽略“玩家”图层,我将角色控制对象设置为。这样光线投射就不会在地板之前击中对象 using UnityEngine; using System.Collections; public cl

我有一个角色控制器,它以恒定的速度沿z轴移动。我想知道角色控制器下的楼层名称。角色控制器从不与地板碰撞。这是一个平行运动。我使用光线投射在C#中查找地板,使用:


这是一个错误。有更好的解决方案吗?

很难说问题出在哪里,但是将此行为附加到角色控制对象将获得光线投射命中的第一个对象的名称

我使用一个倒置的图层蒙版来忽略“玩家”图层,我将角色控制对象设置为。这样光线投射就不会在地板之前击中对象

using UnityEngine;
using System.Collections;

public class GetFloorName : MonoBehaviour 
{
    public string NameOfRaycastHitObject;

    void Update () 
    {
        RaycastHit hitInfo;
        int layerMask = ~(1 << LayerMask.NameToLayer("Player"));
        float distance = 100f;

        if (Physics.Raycast(transform.position, Vector3.down, out hitInfo, distance, layerMask))
        {
            NameOfRaycastHitObject = hitInfo.collider.name;
        }
    }
}
使用UnityEngine;
使用系统集合;
公共类GetFloorName:单行为
{
raycasthitObject的公共字符串名称;
无效更新()
{
RaycastHitInfo;

int LAYERMAK=~(1)你得到了什么错误?在哪里?它不应该是第3行的
myray
吗?你能解释一下LAYERMAK吗?我希望光线投射检查除“Player.layerMAK.NameToLayer”(“Player”)之外的每一层上的碰撞给我层索引,我通过移动它将其转换为位掩码。然后我将其反转。可能会更好地解释它。获取错误:NullReferenceException:对象引用未设置为对象的实例,不幸的是,没有足够的信息来帮助。我上传了用于测试的Unity项目,mayb那会对你有帮助的。
using UnityEngine;
using System.Collections;

public class GetFloorName : MonoBehaviour 
{
    public string NameOfRaycastHitObject;

    void Update () 
    {
        RaycastHit hitInfo;
        int layerMask = ~(1 << LayerMask.NameToLayer("Player"));
        float distance = 100f;

        if (Physics.Raycast(transform.position, Vector3.down, out hitInfo, distance, layerMask))
        {
            NameOfRaycastHitObject = hitInfo.collider.name;
        }
    }
}