Unity在边界框外摧毁玩家(在for循环中保存位置)

2022-01-30 15:09:40 标签 c#unity3d

我想要一些帮助来解决这个问题,因为我的大脑今天有一个有趣的一天,什么是最好的方法来解决这个问题。

我有一个OnDrawGizmos如下

    Transform parentBounds;
void OnDrawGizmos()
{
    parentBounds = this.gameObject.transform;
    Vector3 from;
    Vector3 to;
    for (int a = 0; a < parentBounds.childCount; a++)
    {
        from = parentBounds.GetChild(a).position;
        to = parentBounds.GetChild((a + 1) % parentBounds.childCount).position;
        Gizmos.color = new Color(1, 0, 0);
        Gizmos.DrawLine(from, to);
    }
}

这段代码附加在一个包含4个空游戏对象的“父”对象上,如下所示

这将产生以下Gizmo(根据我在父对象中放置空对象的位置绘制一个正方形)

如果我愿意,我甚至可以增加更多的分数。

那么问题是什么呢?

我所需要的是,如果玩家不在这个区域内,我希望玩家被摧毁。我不确定这个的最佳实践是什么我是否应该创建一个数组来保存xmin ymax等等?或者我应该在每个循环上生成一个新的位置向量?我尝试过一些方法,但都没有得到我想要的结果,我学会了寻求帮助。

提前感谢大家!

###如果这是一款2D游戏(游戏邦注:我认为这是一款2D游戏),那么使用一个引用玩家对象的脚本如何?

A,游戏不使用物理

.。. 公共Rect边界。在每个更新()检查玩家是否在边界内,如果不在-摧毁它。

void Update()
{
    if (!boundaries.Contains(playerObject.transform.position))
    {
        Destroy(playerObject);
    }
}

B,游戏使用物理

.。. 使用下面的脚本创建BoxCollider2D

void OnColliderExit2D(Collider2D collider)
{
    // If collider is player object -> destroy collider.gameObject
}
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码