基本流程
**
0、在基础的地面上会有一个小球,通过控制小球的滚动,吞吃地面上的一些小块。
1、创建基础场景,包括地面,主角,触碰小块。
① 通过材质设置修改相关物体的颜色/光滑度等显示。
② 重复出现的游戏物体最好设置成prefab,以方便修改。
③ 小球上需要添加刚体组件,以模拟物理效果。
④ 触碰小块上添加PickUp标签,用于判断。
2、创建脚本,实现对游戏主角的控制,镜头对主角的跟随,主角触碰小块小块消失(吞食)的功能。
① 在脚本中定义一个刚体,并通过获取组件上的刚体对其赋值。
private Rigidbody rd;
//在start()模块中对其进行赋值。
rd = getComponent<Rigidbody>();
② 通过对这个刚体施加力,对主角进行控制。
float h = getAxisRaw("Horizontal");
float v = getAxisRaw("Vertical");
rd.AddForce(new Vector3(h,0,v));
③ 镜头的跟随,脚本挂在在相机上。首先定义一个gameObject,并将其和工程中的Player联系起来。
public gameObject PlayerTransform;
④ 记录初始化时主角和相机的偏移量,在持续运行时加上偏移量。
//在start()模块中
offset = transform.position - PlayerTransform.position;
//在Update()模块中,更新相机位置
transform.position = PlayerTransform.position + offset;
⑤ 吞吃小球,有两种方式,一种是碰撞检测,但会有明显的触碰效果,第二种是触发检测,将触碰小快的碰撞盒修改成触发器(is Trigger)。
//触碰检测
void OnCollisionEnter(Collision collision){
if(collision.collider.tag == "PickUp"){
Destroy(collision.collider.gameObject);
}
}
//触碰检测
void OnTriggerEnter(Collider collider){
if(collider.tag == "PickUp"){
Destroy(collider.gameObject);
}
}
3、创建UI界面的显示内容,包括一个计数量score,一个完成时的提示量win。
4、在脚本中实现score的计数功能,和win的条件显示功能。
① 首先引入新的环境(?),using UnityEngine.UI;
② 得分计数的实现,因为是对游戏物体的text组件进行修改,所以定义一个text变量,用以和项目中对应的组件联系起来。
public Text text;
private int score;//计数变量
score++;//在每次检测到加分条件时,score+1
text.text = score;//完成赋值
③ 获胜提示,在满足条件的情况下,对winText进行一个激活操作。同样定义一个gameObject变量,和工程中的物体联系起来。
public gameObject winText;
winText.setActive();
5、游戏的发布(将需要构建的scene场景拖入到build的窗口中)
总结
**
1、善用unity提供的manual,当中包括很多class,需要一一熟悉。
2、脚本工程和游戏工程的联系需要定义,使用物体即用gameObject,使用组件即定义组件名称,获取组件通常使用gameObject.getComponent<>();