0

在我当前的(Unity 3.3 IOS)项目中,我有一个角色走过一座桥。如果角色从桥上掉下来,他就会掉进火热的河里并爆炸。问题是当他在桥上时,Raycast 会读取桥上的刚体,他会立即爆炸。如果我将他在场景窗口中重新定位到露天位置,重力会导致他掉入河中并按计划爆炸。我添加了以下代码行以指定仅在光线投射击中“平面”时销毁。它不起作用。

if(hit.collider.gameObject.name == "plane");

角色不会在桥上或撞到飞机/火热的河流时被摧毁。

他将走进几座桥梁和建筑物,所以我只希望他在射线投射到飞机上时被摧毁/爆炸。

谁能告诉我为什么我的代码不起作用或如何纠正它?

这是我完整的 Raycast 代码。

var explosion : Transform;
var point : Vector3;
var explosionRotation : Quaternion;

function Update()
{
    var hit :RaycastHit;
    var dwn = transform.TransformDirection(Vector3.down);
    if (Physics.Raycast(this.transform.position,dwn,hit,3))           
        if (hit.collider.gameObject.name == "plane")
        {
            point = hit.point;
            explosionRotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
            Explode();
        }
}

function Explode()
{
    Destroy(this.gameObject);
    var instanExplosion = Instantiate(explosion, point, explosionRotation);
}
4

1 回答 1

0

你能与所涉及的基本对象分享你的场景吗?

可能会出现一些问题。

  • 这座桥也可能被命名为“飞机”
  • 射线太长

您是否考虑过使用图层?听起来您仅将那条射线用于角色的坠落/死亡目的。您可能希望将您的平面添加到单独的图层并让光线仅检查该图层。

于 2011-05-27T19:19:30.017 回答