创建和销毁物体

原文链接:https://docs.unity3d.com/Manual/CreateDestroyObjects.html

    一些游戏场景中会保存有一定数量的物体,但是对角色,宝物和其他的物体在游戏过程中会被不断创建,和移除。在Unity中,一个GameObject能使用Instantiate函数来创建,它能创建一个现有物体的复制品。

public GameObject enemy;

void Start() {
    for (int i = 0; i < 5; i++) {
        Instantiate(enemy);
    }
}

    值得注意的是,那些复制品不用从场景中现有的物体来创建。更常用的方法是使用Prefab,从编辑器里的项目栏里中抓取一个到声明为public的变量里。同时,初始化一个GameObject ,会复制所有目前挂在它上面的Component。

    Destory()函数可以销毁一个物体,在一帧刷新结束之后或可以在一个短暂的延迟之后执行。

void OnCollisionEnter(Collision otherObj) {
    if (otherObj.gameObject.tag == "Missile") {
        Destroy(gameObject,.5f);
    }
}

    值得注意的是,Destroy函数可以单独销毁一个物体的组件而不影响物体本身。一个常见的错误地是写成下面这样:

Destroy(this);

     这只销毁那个调用它的脚本,而不会销毁这句话所在的脚本文件。

转载于:https://my.oschina.net/u/3205569/blog/910840

好的,可以使用Unity中的碰撞检测机制来实现这个功能。具体步骤如下: 1. 创建三个物体A、B、C,分别添加Collider组件和Rigidbody组件。 2. 创建一个新的物体D,添加Collider组件和Rigidbody组件,并将其位置设置到场景外。 3. 编写脚本,将其挂载到物体A上,实现OnCollisionEnter方法。在该方法中,判断A、B、C三个物体是否都被碰撞到了,如果是,则销毁A、B、C三个物体,然后生成新的物体D。 4. 在生成新的物体D时,将其位置设置到场景内,并且将其隐藏起来。 代码示例: ```csharp using UnityEngine; public class CollisionDetection : MonoBehaviour { public GameObject newObj; // 新的物体 private bool isCollidedA = false; private bool isCollidedB = false; private bool isCollidedC = false; private void OnCollisionEnter(Collision collision) { if (collision.gameObject.name == "A") { isCollidedA = true; } else if (collision.gameObject.name == "B") { isCollidedB = true; } else if (collision.gameObject.name == "C") { isCollidedC = true; } if (isCollidedA && isCollidedB && isCollidedC) { // 销毁A、B、C三个物体 Destroy(GameObject.Find("A")); Destroy(GameObject.Find("B")); Destroy(GameObject.Find("C")); // 生成新的物体D GameObject newObject = Instantiate(newObj); newObject.transform.position = new Vector3(0, 0, 0); // 设置位置 newObject.SetActive(false); // 隐藏新物体 } } } ``` 这样就可以实现当A、B、C三个物体都被碰撞时,销毁它们并生成新的物体D,并将其隐藏起来。当需要显示新物体时,调用SetActive(true)方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值