[Unity小游戲]打磚塊(打方塊)(超詳細)
打磚塊小游戲通常會被當做Unity學習的第一個案例,下面給大家介紹如何實作打磚塊案例的,先來張圖看看效果

首先我們要知道QWER分別是選擇、移動、旋轉、縮放工具的快捷鍵(英文模式下按住才有用),只有在scene場景中才能對物體進行操作,game視角是相機視角
一、打開Unity,創建一個cube拉伸來當作地面放置方塊(要是地形夠平就可以不用,直接創建平面也行,我這里按F2重命名為地面)

二、創建一個cube,將它移動到地面的上方,并給它添加Rigibody,使他具備基本的物理屬性(簡單來說就是被碰撞后會被擊飛或者在半空中會掉下來,這是實作打磚塊游戲的基礎)

三、將此cube移動到Assets中,使他成為一個預制體
四、復制多個Cube,使它成為一堵墻,方法:在scene場景中,點擊cube,Ctrl+D復制,選擇移動工具,按住CTRL鍵移動,這樣每次最會移動一個預設單位距離

多復制幾個后調整位置對齊(因為上傳的動圖要小于5M所以我沒浪費時間對齊,可以按住ctrl移動來對齊)

多選:點擊要復制的第一個cube,按住shift的同時點擊要復制的最后一個cube,按Ctrl+D,用移動工具在場景里面按住Ctrl拖動,就能夠復制出一堵墻,
補充:給方塊上色
五、創建一個材質,設定顏色,給cube上色,單擊Assets檔案夾,右鍵選擇Create ——Material(我這里就不浪費時間,只上色一個)

六、調整相機位置到cube墻體的前方,結合scene和game場景來看相機位置是否合適(可以通過相機的Transform值來調整相機位置)

七、點擊相機,給相機添加移動腳本,我給腳本起名為move,點擊進入腳本進行編輯

(如果你的腳本名和我的腳本名一樣,可以直接復制一下代碼,不然需要改class后面的類名)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
public float speed = 3; //設定一個共有型別的變數 來設定相機移動速度 public型別可以在代碼外進行修改 并以代碼外修改的資料作為腳本中運行的資料
public float bulletspeed = 50; //子彈速度
private float h; //設定h來獲取Horizontal(橫軸方向的輸入,即A鍵和D鍵的輸入)
private float z; //設定z來獲取Vertical(縱軸方向的輸入,即W鍵和S鍵的輸入)
public GameObject bullet; //定義一個物件:子彈
//start函式中的代碼,在游戲開始時會運行一次,后面將不會運行 ,這里用不到
void Start()
{
}
// Update 里面的代碼 每一幀都會運行
void Update()
{
float h = Input.GetAxis("Horizontal"); //獲取AD鍵的輸入 即水平方向
float z = Input.GetAxis("Vertical"); //獲取WS鍵的輸入 垂直方向
transform.Translate(new Vector3(h, z, 0) * Time.deltaTime * speed);
//translate是transform的一個屬性 表示平移 Vector3(x,y,z)表示空間中的一個三維向量 我們這里來通過h和z的輸入來控制向量的大小來實作相機的位移
//Update一幀執行60次,每幀都new 一個Vector3的話,對記憶體是一個消耗,所以乘一個 Time.deltaTime后每幀都只執行一次 也就是說 按一下只移動3個單位(speed=3),不然就會移動speed*60個單位
if (Input.GetMouseButton(0)) //如果按下滑鼠左鍵 代碼表示為Input.GetMouseButton(0)
{
//instantiate(克隆物件,克隆位置,克隆角度) transform.position沒有前綴 默認為this.transform.potiton 即這個物體的位置
GameObject a = GameObject.Instantiate(bullet, transform.position, transform.rotation); //創建一個和bullet(子彈)一樣的物件,位置和相機的位置一樣,因為這個腳本是掛在相機上面的;
Rigidbody rgd = a.GetComponent<Rigidbody>(); //把a剛體屬性給rgd
rgd.velocity = transform.forward * bulletspeed; //Rigidbody.velocity 這個方法是瞬間給物體一個恒定的速度,將物體提升至該速度,
// transform.forward 是向前的方向 * speed 發射速度
Destroy(a, 2); //兩秒后摧毀a 即子彈
}
}
}
Ctrl+S保存!!!
八、回到Unity中制作子彈預制體,在這之前我們把所以cube都放在一個空物體下,點擊scene右鍵創建一個空物體,利用shift鍵選中所有cube,拖拽至gameobject下,按F2可以重命名,我將它命名為方塊墻

創建子彈預制體:在空白面板處右鍵創建sphere(球體),點擊sphere,在其Transform面板下找到Scale(縮放),我將其各個方向的大小都縮放至0.1 使其成為子彈的大小,并將其拖拽至Assets下使之成為預制體,

然后在scene下把sphere洗掉掉(檔案中還是會有sphere,不用擔心,下圖為洗掉后的樣子)

九、給預制體sphere添加Rigidbody組件,使其具備物理屬性,在代碼中也呼叫了其物理屬性,所以得加上

加上Rigidbody后再將sphere拖拽至相機move腳本下的bullet中,使之實體化,代碼中的bullet就成了游戲中的sphere了

十、點擊運行按鈕即可運行,WASD控制移動,滑鼠左鍵發射,

ohhh這樣我們的第一個Unity案例就完成了!是不是很激動!!!在我的博客主頁中可以找到更多有關Unity的學習內容,日后也會不定期更新,有需要的同學可以關注一波,
————————————————分割線———————————————
前幾天上課突然來了靈感,制作了一款打磚塊游戲,下面附有鏈接,里面有三種游戲模式,有三個彩蛋,告訴大家一個彩蛋 第一個游戲中按7次N再按K 可以用大方塊射擊 第一個游戲需要在4秒內擊落所有方塊 第二個游戲需要在23秒內擊落23個方塊
鏈接:https://pan.baidu.com/s/1myDSwXo1ijUJik0WChAZ5A
提取碼:6n2j
復制這段內容后打開百度網盤手機App,操作更方便哦–來自百度網盤超級會員V1的分享
(gif動圖太大了,只能錄一小部分,感興趣的可以下載一個玩玩,37M大小,最新的2.3.2版本,可以在我的資源里面找到1.0.0版本,1.0.0版本為最初版本,只有一個功能)

最后謝謝大家的支持啦ohhh!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/266633.html
標籤:其他
上一篇:記錄實踐PC端微信防撤回實作程序(基于3.1.0.67版本)
下一篇:KVM部署
