unity3d - 检查对象是否完全通过另一个对象 Unity3d

标签 unity3d unityscript

我正在玩一个游戏,其中角色穿过不同的走廊和走廊来实现他们的目标。当玩家穿过走廊时,我希望当玩家“通过”墙壁时墙壁消失。这可能听起来令人困惑,所以我提供了一张我想要发生的事情的图片:

Diagram

我已经有了使墙不可见的功能,但我不知道应该如何调用它。我试过在什么时候调用它

player.position.z > wall.position.z

但这会导致每面墙在玩家经过一半时(在它变换时)变得不可见;我想在玩家完全通过它时调用它。有什么方法可以检查玩家是否完全通过 z 轴上的墙网格?

最佳答案

玩家能否沿着走廊返回?如果是这样,这是一种检查摄像头是否背对相关墙壁的简单方法。

// Please cache the variables; I'm using properties for simplicity's sake.

float maxViewAngle = Camera.main.fieldOfView / 2f + 20;  // +20 for some padding

Vector3 difference = Camera.main.transform.position - wall.transform.position;

float angleDifference = Vector3.Angle( Camera.main.transform.forward, difference );

if ( angleDifference > maxViewAngle )
{
  wall.HideThyself();  // Or whatever
}

您发布的解决方案 player.position.z > wall.renderer.bounds.max.z 只能在一个轴的一个方向上工作。如果您的关卡是一维的并且只向前移动,那么这很好!

编辑:我应该提一下,如果你的墙是静态的(不可变的并在检查器中标记为“静态”)那么你可以更容易地使用 occlusion culling (unity docs)如果您有 Unity Pro。

关于unity3d - 检查对象是否完全通过另一个对象 Unity3d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176500/

相关文章:

unity-game-engine - OncollisionEnter2D 不工作,但 OnTriggerEnter2D 工作正常

ruby-on-rails - 通过网络服务 Unity3D 游戏

c# - 即使我将变量设为静态方法或创建相关类的新实例,我也无法访问另一个类中的变量?

unity3d - 什么是 GPU 和 CPU 之间的显式同步

unity3d - 寻找线段-矩形交点

unity-game-engine - Unityscript - 这是什么样的声明?

unity3d - 如何在 RectTransform 中计算 sizeDelta?

javascript - 如何根据比率以混合模式生成敌人

c# - 如何声明弱委托(delegate)(C#)?

visual-studio-2010 - 安装UnityVS时出现套接字异常