前言
最近想做一个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);
}
}
}