首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查对象是否完全传递了另一个对象Unity3d

检查对象是否完全传递了另一个对象Unity3d
EN

Stack Overflow用户
提问于 2013-01-06 05:17:33
回答 2查看 907关注 0票数 3

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

我已经有了一个使墙不可见的函数,但我不知道该如何调用它。我试着在以下情况下调用它

代码语言:javascript
复制
player.position.z > wall.position.z

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-08 08:36:35

玩家还能回到那个走廊吗?如果是这样的话,这是一个简单的方法来检查相机是否背对着有问题的墙壁。

代码语言:javascript
复制
// 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)

票数 2
EN

Stack Overflow用户

发布于 2013-01-06 05:55:06

解决了!发现渲染器有一个"max“属性。我刚刚使用了:

代码语言:javascript
复制
player.position.z > wall.renderer.bounds.max.z
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14176500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档