Unity3d小白遊戲--Roll A Ball

我們先看一下游戲效果:
在這裏插入圖片描述

第一步:製作桌面效果

在這裏插入圖片描述
分析:

  • grand 創建
    Hierarchy面板下,右鍵->3D Object->Plane;改名爲grand
    添加Material
    默認大小爲10m

  • Material 材質球
    在Project面板下,右鍵->Create->Material
    注:將創建的材質球放在Assets文件夾下的Materials文件夾內方便管理,Materials是自己創建的

  • Cube
    Hierarchy面板下,右鍵->3D Object->Cube;
    按CTRL+D可以快速複製
    默認大小爲1m
    根據Plane的大小,4個Cube的參數分別爲:

    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

  • Cubes
    爲了方便管理,在 Hierarchy面板下,右鍵->Create Empty
    將所有的Cube放在Create Empty下

第二步:製作小球

在Hierarchy面板下創建一個Sphere。
添加剛體組件
在這裏插入圖片描述
我們先了解一下什麼是剛體組件
剛體:通過物理模擬改變物體的位置。
意思是,讓遊戲物體有了物理的一些性質,我們來演示一下,當一個物體添加剛體組件後,會怎樣。
在這裏插入圖片描述
我們可以看到,遊戲運行後小球會擁有重力而落下。
剛體組件在設計遊戲物體之間的碰撞,移動等物理效果時,會提供很大的便利。

第三步:讓小球移動

在Script文件夾下添加一個c#腳本,並讓它賦給小球。
在這裏插入圖片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ball : MonoBehaviour {

    private Rigidbody rd;      //創建一個剛體

	// Use this for initialization
	void Start () {
        rd = GetComponent<Rigidbody>();    //得到當前遊戲物體的剛體組件
	}
	
	// Update is called once per frame
	void Update () {
        //水平移動(左右)
        float h=Input.GetAxis("Horizontal");

        //垂直移動(前後)
        float v = Input.GetAxis("Vertical");

        //給剛體一個力,可以使遊戲物體前後左右移動
        rd.AddForce(new Vector3(h, 0, v));
	}
}

在這裏插入圖片描述
注:控制運動的鍵,就是我們平時玩遊戲時a \ d \ w \ s鍵

第四步:創建食物,並令其旋轉

1.創建一個Cube創建材質改爲黃色,使其旋轉,立在地面上。
將Transform中的Rotation屬性全改爲45即可。
在這裏插入圖片描述
2.另Cube稱爲預製體。

  • 預製體創建,在Assets文件夾下創建Prefabs文件夾,將創建的Cube拖入即可。
  • 預製體特性:可以創建多個一摸一樣的物體,更改預製體,所有的物體也會跟着發生改變
    在這裏插入圖片描述
    3.在預製體文件夾內的Cube上添加一個腳本,並編寫。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rate : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        //使用Transform.Rotate以多種方式旋轉游戲對象。旋轉通常作爲歐拉角,而不是四元數。
        //new Vector3(0, 0, 3)使物體以z爲軸心旋轉,數值越大旋轉越快
        transform.Rotate(new Vector3(0, 0, 3));
	}
}

4.CTRL+D就會複製多個預製體,另這些預製體移動到小球周圍。
注意,當Cube旋轉後的座標系也會跟着旋轉,這是我們只需要調整它的座標系爲世界座標系即可。
在這裏插入圖片描述
演示一下:

在這裏插入圖片描述

現在小球與食物碰撞並沒有發生任何變化,下面我們讓它們產生一些變化。

第五步:碰撞檢測

首先我們將預製體的標籤改爲“eat”;
在這裏插入圖片描述

然後在代碼中添加

 void OnCollisionEnter(Collision collision)
    {
        //如果標籤爲eat
       if (collision.collider.tag=="eat")
        {
            //就銷燬這個遊戲物體
            Destroy(collision.collider.gameObject);
        }
    }

效果演示:
在這裏插入圖片描述

我們發現相機並沒有跟着小球一起運動,這樣容易找不到球的位置,這時我們就需要相機跟着球運動。

第六步:相機跟隨

在Main Camera上添加一個腳本組件。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class follow : MonoBehaviour {
    public GameObject followed;
    private Vector3 d;
	// Use this for initialization
	void Start () {
        //計算相機與小球的相對位置   利用高中數學的向量知識來計算
        d = followed.transform.position - transform.position;
	}
	
	// Update is called once per frame
	void Update () {
        //利用相對位置不變,使相機跟着小球移動
        transform.position = followed.transform.position - d;
	}
}

演示效果:

在這裏插入圖片描述

現在離我們的目標越來越近了,不過還差一步,就是沒有“喫“的效果。
碰撞檢測,運用的是物理效果的碰撞,並沒有使小球喫到食物,下面我們來稍微改一下。

第七步:觸發器

將圖中的方框勾選上就會檢測不到碰撞。
注意,這是預製體食物的,不是小球的
在這裏插入圖片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ball : MonoBehaviour {

    private Rigidbody rd;      //創建一個剛體

	// Use this for initialization
	void Start () {
        rd = GetComponent<Rigidbody>();    //得到當前遊戲物體的剛體組件
	}
	
	// Update is called once per frame
	void Update () {
        //水平移動(左右)
        float h=Input.GetAxis("Horizontal");

        //垂直移動(前後)
        float v = Input.GetAxis("Vertical");

        //給剛體一個力,可以使遊戲物體前後左右移動
        rd.AddForce(new Vector3(h, 0, v));

	}
   //碰撞檢測
    void OnCollisionEnter(Collision collision)
    {
        //如果標籤爲eat
       if (collision.collider.tag=="eat")
        {
            //就銷燬這個遊戲物體
            Destroy(collision.collider.gameObject);
        }
    }

    //觸發檢測    沒有物理效果
    void OnTriggerEnter(Collider collider)
    {
        if (collider.tag == "eat")
        {
            Destroy(collider.gameObject);
        }
    }
}

這樣就不會在碰撞時產生物理效果了。
在這裏插入圖片描述

第八步:編輯UI界面

1.計數器
在這裏插入圖片描述
在boll代碼中添加:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.當小球喫完後會在屏幕中顯示”你贏了!!”
在這裏插入圖片描述
在代碼中添加:
在這裏插入圖片描述
在這裏插入圖片描述

最終展示:
在這裏插入圖片描述

快去試試吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章