gpt4 book ai didi

c# - 使用光线转换检测障碍物并阻止玩家移动

转载 作者:行者123 更新时间:2023-11-30 12:20:03 25 4
gpt4 key购买 nike

我是 Unity3D 的新手,我遇到了碰撞检测方面的问题。如果我通过光线转换击中障碍物并阻止朝这个方向移动,我想返回 true。当我面对面地面对障碍物时,效果很好。当我改变方向并且我在障碍物前面时(但面对另一个方向)然后它返回 false 并且我仍然可以向各个方向移动(它应该像你在第一张图片上看到的那样阻止“向上”移动)。任何提示将不胜感激!

当障碍物在我们面前并且我们不能“向上”移动时返回真

当障碍物在我们的左边或右边时返回 false

玩家走错后被挡住

这是我的代码示例:

void Update()
{

Ray myRay = new Ray(transform.position, Vector3.right);
Debug.DrawRay(transform.position, Vector3.right, Color.red);

if (Physics.Raycast(myRay, out hit, 1.5f))
{
if (hit.collider.gameObject.tag == "TerrainObject")
{
Debug.DrawRay(transform.position, Vector3.right, Color.blue);
upHit = true;
}
}
else
upHit = false;
...
}

最佳答案

如评论中所述,您需要增加光线转换的起始高度。

使用 Ray myRay = new Ray(transform.position+new Vector3(0f,0.15f,0f), Vector3.right); 从地面上方一点点进行光线转换。

关于c# - 使用光线转换检测障碍物并阻止玩家移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53527411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com