昨天已经写过一篇unity小游戏了,今天再来写另外一篇吃豆人。
展示效果\
这个小游戏主要是做了主角的移动,场景切换,碰撞检测。首先我们需要把迷宫做好。这里我只是做了个demo,所以只做了两个迷宫,有就是两个等级。
1主角移动
int n = 6;
float H = Input.GetAxis("Horizontal") * Time.deltaTime * n;
float V = Input.GetAxis("Vertical") * Time.deltaTime * n;
this.gameObject.transform.Translate(H, V, 0);//移动函数
这里面使用了摇杆进行操作,H和V是分别代表横向和纵向的操作。Translate就是游戏主体的移动。
2场景切换
a.transform.localPosition = new Vector3(-100F, 10.3F, -0.87F);
b.transform.localPosition = new Vector3(0, 0, -0);
this.gameObject.transform.localPosition = new Vector3(-22.1F, 10.3F, -0.87F);
大家仔细看gif图片,我level1和level2上面的切换非常流畅。因为我并不是替换scene。对于一些小游戏来说,尽量不要随便用scene的切换,不然会感觉有卡顿。我这里只是做了位置的主体转变而已。当然一般这些我们都可以用配置表进行配置。如果不是大型场景的转换,都没有比较切换scene这个还是很重要的。
3碰撞检测
//碰撞函数
void OnTriggerEnter(Collider other)
{
//碰到的是球
if (other.name == "ball")
{
Destroy(other.gameObject);
print(ballcount);
ballcount -= 1;
if (ballcount == 0 )
{
if (guanqia == 1)//下一关
{
a.transform.localPosition = new Vector3(-100F, 10.3F, -0.87F);
b.transform.localPosition = new Vector3(0, 0, -0);
this.gameObject.transform.localPosition = new Vector3(-22.1F, 10.3F, -0.87F);
ballcount = 3;
//关卡+1
guanqia = guanqia + 1;
}
else//赢了
{
print("赢了");
}
}
}
//碰到的是墙
else
{
//返回原来的位置
this.gameObject.transform.localPosition = new Vector3(-22.1F, 10.3F, -0.87F);
}
}
碰撞函数我们这里也是需要深入了解的OnTriggerEnter(Collider other)。这个是触发器碰撞检测。other是代表碰到的其他东西。这里面有两种情况,这里要是碰到小球就算分数,进入下一关。要是碰到的是墙,就要回到原来的位置。这个脚本是直接挂在主角身上的,是对主角的碰撞检测。
这个是一个比较基础简单的游戏实例,有兴趣学unity的话,可以关注公众号:诗一样的代码,留言给我,我教你系统地学。