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

我已经有了一个使墙不可见的函数,但我不知道该如何调用它。我试着在以下情况下调用它
player.position.z > wall.position.z但这会导致每一面墙在玩家经过它的一半(在它的变形处)时变得不可见;我想在玩家完全越过它的时候调用它。有没有什么方法可以检查玩家是否完全越过了z轴上的墙的网格?
发布于 2013-01-08 08:36:35
玩家还能回到那个走廊吗?如果是这样的话,这是一个简单的方法来检查相机是否背对着有问题的墙壁。
// 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只能沿着一个轴在一个方向上工作。如果你的关卡是一维的,并且只向前移动,那么这是很好的!
编辑:我要提到的是,如果你的墙是静态的(不可变的,并且在检查器中被标记为“静态”),那么如果你有Unity Pro,你可以更容易地使用occlusion culling (unity docs)。
发布于 2013-01-06 05:55:06
解决了!发现渲染器有一个"max“属性。我刚刚使用了:
player.position.z > wall.renderer.bounds.max.zhttps://stackoverflow.com/questions/14176500
复制相似问题