通常 2D 游戏是水平或垂直的。 要进入下一个级别,您需要从左到右(或从上到下等)。 一个关卡游戏开发素材,我下面实现的切换场景的条件是收集完所有金币走到出口点(Exit)触发进入下一关卡的提示开发学习,按空格进入下一关卡。
现在开始一个简单的练习,切换3个场景
让我们从一些变量声明开始。 贴图可以换成其他提示unity 切换场景,或者文字提示“按空格切换”等;
var winImage : Texture2D; //游戏结束弹出的“you win”贴图
private var myTime : float=0; //记录时间的变量
private var isNext = false; //是否进入下一关
如何映射可以加一个OnGUI()函数来实现
function OnGUI()
{
if(isNext) //满足可进入下一关条件,弹出贴图
GUI.DrawTexture(Rect(Screen.width /2-179,Screen .height /2
-90,358,180),winImage,ScaleMode.ScaleToFit ,true,0);
}
最后在Update()函数中实现场景切换功能。 当游戏场景运行5秒后,会弹出“you win”贴纸。 按空格进入第二个场景,然后用同样的方法进入第三个场景,然后继续回到第一个场景。 一个场景,这样一个循环; 因为平时按空格键(Input.GetButtonDown("Jump"))默认是跳转功能,为了避免混淆,加了一个布尔变量isNext一起实现; 也可以添加一个Button控件,点击进入下一级; 只需更改 if 语句{例如:if(GUI.Button( Rect( x,y ,width ,height ) , "switch scene" ));}。
(提示:要实现场景切换,需要在File->Building Setting中添加场景unity 切换场景,并分配下面用到的数字0、1、2等)
function Update ()
{
myTime += Time.deltaTime ; //获取游戏开始到当前时间
if(myTime >= 5) //游戏运行时间大于5秒就切换场景
isNext = true; //也可以从OnTriggerEnter()函数获取
if(Input.GetButtonDown("Jump")&&isNext)//按下空格
{
isNext = false;
var index : int = Application.loadedLevel;
if(index <= 1) //当前在场景0
Application.LoadLevel (index+1); //场景编号+1进入下一关
if(index == 2)
Application .LoadLevel (0); //回到第1关
//Application .LoadLevel ("Scene0");//也可以直接用场景名
}
}
对于触发点检测,可以使用碰撞检测方法(下面的代码是“Enter Trigger”)。 同时,需要将贴图出口的标签改为“出口”(Inspector->Tag),在出口处添加一个Box collider,Is Trigger。 打钩;
function OnTriggerEnter(other:Collider)
{ //exit为触发器; //搜索场景中的金币直到为空(被收集了)
if(other.tag=="exit"&&GameObject.FindWithTag("jinbi")==null)//需收集所有金币
{
isNext = true; //转换场景
}
}
的
的