前言

最近想做一个STG游戏
说到STG,我第一个想到的不是雷电这种经常的STG游戏,而是东方Project系列
我更喜欢东方给我带来的体验,无论是东方的华丽弹幕和符卡,还是它的配乐,都已经刻在我的DNA里了!
于是我便尝试做了东方Project的复刻游戏

问题

当敌人移动出镜头外时,我希望删除掉这个物体,但是如果单用常规的Destory的话,我们就需要知道每一个敌人的删除时间,但这显然太麻烦了,当然我们可以在镜头外设置一圈的Trigger,但这明显不是一个好方法,于是我去找翻了一下Unity的用户手册,找到了OnBecameVisible()和OnBecameInvisible()这两个方法。

解决思路

利用这两个函数就可以就轻松解决这个问题
OnBecameVisible()    对象在Camera内时
OnBecameInvisible()   对象在Camera外时
由于第一次敌人是在摄像机外部生成的,需要加上一个Bool,当敌人进入玩家视野后改为true,这样就可以实现无论对象怎么生成,存在多长时间,都可以正常删除,这个脚本同样挂载到弹幕上也适用。

代码部分

using UnityEngine;
using System.Collections;

public class isInCamera : MonoBehaviour
{
    bool isDelete;
    private void Start()
{
    isDelete= false;
}
    private void OnBecameVisible()
{
    //print("摄像机视野内");
    isDelete = true;
}
    private void OnBecameInvisible()
{
    //print("在摄像机视野外");
    if(isDelete)
    {
        Destroy(gameObject);
    }
}
}