跑酷游戏其实算是很简单的一种游戏了,实现原理其实就是当物品都在向左移动时,你控制一个人物上下移动,躲避障碍物,获取道具以及金币等等。通常是以你拿到多少分数,走了多少距离当作胜利条件。
那么首先准备你需要的素材,比如金币,道具,障碍物,移动人物等。
那么在游戏运行过程中,你需要写触发器,即人物与金币,道具,障碍物接触时的内部函数。如下
void OnTriggerEnter(Collider mCollider)
{
//如果碰到的是金币,则金币消失,金币数目加1;
if (mCollider.gameObject.tag == "Coin")
{
Destroy(mCollider.gameObject);
mCoinCount += 1;
if (mCoinCount == 10)
{
mMoveSpeed += 0.5F;
}
if (mCoinCount == 30)
{
mMoveSpeed += 0.5F;
}
if (mCoinCount == 50)
{
mMoveSpeed += 0.5F;
}
}
else if (mCollider.gameObject.tag == "Coin2")
{
Destroy(mCollider.gameObject);
mMoveSpeed = 2.5f;
}
//如果碰到的是障碍物,则游戏结束
else if (mCollider.gameObject.tag == "Rock")
{
isRuning = false;
}
}
由于我这里选择的是让人物移动,因此镜头是需要移动的,而物体不移动,只要确定物体摆放位置即可。
由于笔者不熟悉C#代码,因此除了能看懂内部算法的逻辑外,无法很好了解其中关于Unity的函数的使用。因此不误导大家,我就直接把脚本写出来了。
首先是人物的脚本
public class Player : MonoBehaviour {
//定义角色移动速度
public float mMoveSpeed = 2.5F;
//摄像机
private Transform mCamera;
//背景图片
private Transform mBackground;
//角色是否在奔跑
public bool isRuning = true;
//场景中路段总数目
private int mCount = 1;
//路段预设
public GameObject road;
//死亡动画播放次数
private int DeathCount = 0;
//收集的金币数目
public int mCoinCount = 0;
//当前奔跑距离
public int mLength = 0;
//当前得分
public int mGrade = 0;
//动画组件
public Animator anim;
void Start()
{
//获取组件
anim = GetComponent<Animator>();
//获取相机
mCamera = Camera.main.transform;
//获取背景
mBackground = GameObject.Find("