最近因为毕设在学习Unity3D引擎,所以用博客记录一下学习的过程。
游戏展示
今天做一个消除小游戏,游戏运行之后,通过键盘的WSAD四键控制方块Cube的前后左右,当方块碰到球体Sphere后,该球体就消失。
涉及的知识点
预制体的创建,按键控制事件,对象实例化
1.游戏物体的创建
1.创建一个方块Cube,一个平台Plane,这两个直接在Hierarchy里创建就行了。
2.Cube要执行碰撞任务,所有要赋予其刚体属性,在Inspector面板中点击Add Component添加Rigidbody。
3.预制体的创建:在Hierarchy中创建一个Sphere,然后拖至Assets中,就变成了预制体,然后将该Sphere删除,重新创建一个Empty对象。
4.为了给被碰撞的球体做标记,便于识别,在新建的Empty对象Inspector面板中Tag中选Player。
预制体实例化脚本
public GameObject sp;
// Use this for initialization
void Start () {
for (int i = 0; i < 10; i++)
{
Vector3 ve3 = new Vector3(Random.Range(-4.0f, 4.0f), 1.0f, Random.Range(-4.0f, 4.0f));
Instantiate(sp, ve3, Quaternion.identity);//实例化,随机分布
}
}
该脚本完成后,拖拽至创建的Empty对象上,并将Sphere预制体拖至Inspector面板中脚本的Sp处。
方块控制脚本
private Rigidbody rb;
public float speed = 5.0f;
void Start() {
rb = this.GetComponent<Rigidbody>();//获取刚体组件
}
void Update() {
if (Input.GetKey(KeyCode.W))
{
rb.MovePosition(transform.position + Vector3.forward * speed * Time.deltaTime);
//transform.position是对象当前位置,Time.deltaTime可以将速度转化为每秒多少,原来为每帧多少
}
if (Input.GetKey(KeyCode.S))
{
rb.MovePosition(transform.position + Vector3.back * speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A))
{
rb.MovePosition(transform.position + Vector3.left * speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.D))
{
rb.MovePosition(transform.position + Vector3.right * speed * Time.deltaTime);
}
}
private void OnCollisionEnter(Collision collision)//碰撞函数,碰撞后执行
{
if (collision.gameObject.tag == "Player")
{
Destroy(collision.gameObject);
}
}
同样的,该脚本拖至Cube处。
如何改变物体颜色
在Assets中创建Material,修改其颜色,然后拖到想要改变的物体上。