作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我正在尝试使用 Sfml 编写 2D 游戏。对于那个游戏,我需要一个 Lightengine 和一些代码,这些代码可以为我提供玩家可见的世界区域。由于这两个问题非常吻合(实际上是相同的),我想同时解决
我是一名优秀的程序员,十分优秀!