前言:
經過三分鐘的思考決定換個標題,這兩天其實游戲制作進度推了大半了,加入了許多自我創作的素材,不過想一想用來講解的實體不該這么花哨,決定還是參照我的一些教材做一些簡單的示例不然要說的東西太多,本人學藝不精尚不能把用到的每個版塊講清楚,這篇內容就是創建一個游戲模型并讓它有攻擊的能力順便補上之前沒說的攝像機與燈光,同時講解會放前面,實際操作放后面,一些類似的操作就不一步步展示了,自我發揮創作的要素在游戲大體完成后逐步介紹給大家,我會另開一個專案檔案用來講解用,之前那個被塞了太多東西了,
射擊類游戲實體
作為第一個用來發布講解的游戲,我立馬就想到了射擊類游戲,當然不是第一人稱射擊的那種,是打小飛機累計得分的那種型別,方便魔改引數以及自行制作一些敵人的模型,
游戲相關設定:
1.在游戲中,我們將操作戰艦擊墜敵人的飛船,游戲開始后戰艦會向前推進,消滅敵人取得分數,戰艦被擊落游戲才會結束,
2.戰艦擁有固定裝甲(血量),敵人有多種并擁有獨特的飛行軌跡與裝甲
3.螢屏上會顯示血量、得分等內容
4.待添加
涉及的英文(含括上一篇,有錯誤煩請指正,):
Assets:資源 Import New Assets :匯入新資源 Project:工程 Show in Explorer:在資源管理器中顯示 Create:創建 Folder:檔案夾 File:檔案 New Scene:新場景 Save Scene As:場景另存為
GameObjct:游戲物件 Plane:平面體 Material:材料 Background:背景 Inspector:檢查工具 Element:元素 Rendering Mode:渲染模式 Shader:著色器 Texture:紋理 Animator Controller:影片控制器
Clip:剪輯 Add Property:添加屬性 Camera:攝像機 Point Light:點光源 Align With View:與視角對齊 Range:范圍 Hierarchy:層級 Script:腳本 Component:組件 Transform:變化改變
攝像機
攝像機是用來展示游戲世界的視窗,游戲引擎在運算程序中,根據攝像機視角進行裁切,將3D模型頂點位置投射到攝像機的矩陣平面內,再進行坐標轉換將頂點位置最終投射到螢屏的像素坐標上(無論3d或者2d,我們顯示幕都為二維平面),在Unity場景中允許存在多個攝像機也就是說可以切換視角,實際上攝像機就是一個游戲體,可以移動、旋轉、用腳本控制等,
在這個太空游戲中,我們只需要視角從上向下展望就行,我后續添加了另外的視角不過下面就暫時不放出來了,
選中攝像機(main camera)—【GameObject】—【Align With View】可以讓視角與現在對齊,
對于相機視角操作有多種,我的做法是滑輪(拉遠拉近)、按下滑輪(平移)、按住滑鼠右鍵(轉換角度)三個方面大體除錯范圍,用鍵盤的上下左右微調視角,
篇幅問題就不展示截圖了,自己動手試一試一下就能明白,多視角創建使用會放后面具體說,
燈光
【Windows】—【Rendering】—【Lighting Settings】,選擇Ambient Source,將Skybox改為color,這樣會使用顏色作為環境光代替默認天空盒,會解決SceneheGame場景中亮度不一致的問題,
【GameObject】—【Light】—【Point Light】,創建一個點光源,Range改變影響范圍,Intensity改變燈光強度,讓畫面更美觀些,(為了直觀顯示變化亮度調高了點)

主角創建
到本游戲的主要環節之一了,這里開始就能發揮一下自我的想法,而不是在軟體操作上點來點去,先介紹基本的,沖沖沖,
部分組件講解:
Input是一個靜態類,封裝了所有輸入功能,包括鍵盤、滑鼠或觸控操作,在這里我回應了不同的按鍵功能,當然還有另外的輸入方式可以使代碼支持跨平臺運行,
Time.deltaTime表示每幀的經過時間,所有影片效果都需要乘上Time.deltaTime,比如在示例中,速度*Time.deltaTime,表示每幀移動N個單位距離,
this.transform呼叫的是游戲體的Transform,Transform組件提供的主要功能都是和移動、旋轉、縮放游戲體有關,我們呼叫Translate函式移動游戲體,并輸入Vector3型別引數,用來表示x、y、z三個方向上的移動距離,移動的方向與美術素材方向有關,建議匯出素材時模型正方向朝向Z軸,
Vector3是一個值型別的結構,表示向量,即某個位置或方向,用于坐標位置時好理解,用于方向時就是表示在某方向上偏離一定距離,Translate函式實作的功能就是普通的加減法,
具體步驟:
1.將準備好的主角素材拖入【Hierachy】視窗,我就用的簡樸的飛機模型,
2.右鍵【Assets】—【Create】—【Folder】創建一個名為Scripts的檔案夾,用于存放各種撰寫的腳本,

3.選中Scripts檔案,右鍵—【Create】—【C# Script】,創建一個名為Player的腳本,

4.【Component】—【Scripts】—【Player】,將腳本指定給主角游戲體作為組件
5. 點開Player腳本檔案,撰寫代碼
這里實作了主角的上下左右的移動
[AddComponentMenu("MyGame/Player")]這一段代碼可以讓腳本出現在MyGame中,方便管理腳本
using System.Collections; using System.Collections.Generic; using UnityEngine; [AddComponentMenu("MyGame/Player")] public class Player : MonoBehaviour { public float m_speed = 1;//加一個類控制速度 // Start is called before the first frame update void Start() { Transform m_transform = this.transform;//修改點 } // Update is called once per frame void Update() { float movev = 0; float moveh = 0; if (Input.GetKey(KeyCode.UpArrow)) { movev += m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.DownArrow)) { movev -= m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.LeftArrow)) { moveh -= m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.RightArrow)) { moveh += m_speed * Time.deltaTime; } this.transform.Translate(new Vector3(moveh, 0, movev)); } }

6.調整合適移動速度

總結:
現在運行游戲,游戲體就能有可用的移動了,第六步中的speed速度修改會直接改變代碼中m_speed的值,直接在層級中修改就不用去原代碼修改了,接下來的子彈創建、敵人定義等就能上手到熟悉的編程環節了,對了,雖然只定義了四個方向的移動,實際操作時是可以實作斜方向就是多個按鍵同時作用的效果的,我自己定義的另一款還涉及到了瞬移等操作,一步步來吧,先基礎點的好,下一篇應該就是子彈模型創建與發射相關了,
各位大佬,都看到這了,不點個關注推薦再走嘛,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/235930.html
標籤:其他
上一篇:鏈表中環的入口結點
下一篇:如何利用云原生快速實作多地部署
