Unity3D学习之旅01——消除小游戏的制作

时间:2024-04-11 11:26:57

最近因为毕设在学习Unity3D引擎,所以用博客记录一下学习的过程。

游戏展示

今天做一个消除小游戏,游戏运行之后,通过键盘的WSAD四键控制方块Cube的前后左右,当方块碰到球体Sphere后,该球体就消失。
Unity3D学习之旅01——消除小游戏的制作

涉及的知识点

预制体的创建,按键控制事件,对象实例化

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处。
Unity3D学习之旅01——消除小游戏的制作

方块控制脚本

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,修改其颜色,然后拖到想要改变的物体上。