在角色控制器下方查找对象

本文关键字:查找 对象 方查找 角色 控制器 | 更新日期: 2023-09-27 17:58:56

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

myray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(myray, myhit, 1000)) {
    Debug.DrawLine (ray.origin, hit.point);
    print(myhit.collider.name);
}

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

在角色控制器下方查找对象

很难判断问题是什么,但将此行为附加到角色控制的对象将获得光线投射命中的第一个对象的名称。

我使用倒置的图层遮罩来忽略"Player"图层,我将角色控制的对象设置为该图层。这样光线投射就不会击中地板之前的对象。

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