Unity射擊實例講解—主角建立

前言:編程

通過三分鐘的思考決定換個標題,這兩天其實遊戲製做進度推了大半了,加入了許多自我創做的素材,不過想想用來說解的實例不應這麼花哨,決定仍是參照個人一些教材作一些簡單的示例否則要說的東西太多,本人學藝不精尚不能把用到的每一個版塊講清楚,這篇內容就是建立一個遊戲模型並讓它有攻擊的能力順便補上以前沒說的攝像機與燈光,同時講解會放前面,實際操做放後面,一些相似的操做就不一步步展現了。自我發揮創做的要素在遊戲大致完成後逐步介紹給你們,我會另開一個項目文件用來說解用,以前那個被塞了太多東西了。函數

 

射擊類遊戲實例工具

 

做爲第一個用來發布講解的遊戲,我立馬就想到了射擊類遊戲,固然不是第一人稱射擊的那種,是打小飛機累計得分的那種類型,方便魔改參數以及自行製做一些敵人的模型。動畫

遊戲相關設定:this

1.在遊戲中,咱們將操做戰艦擊墜敵人的飛船,遊戲開始後戰艦會向前推動,消滅敵人取得分數,戰艦被擊落遊戲纔會結束。spa

2.戰艦擁有固定裝甲(血量),敵人有多種並擁有獨特的飛行軌跡與裝甲3d

3.屏幕上會顯示血量、得分等內容調試

4.待添加code

 

涉及的英文(含括上一篇,有錯誤煩請指正,):orm

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的值,直接在層級中修改就不用去原代碼修改了,接下來的子彈建立、敵人定義等就能上手到熟悉的編程環節了,對了,雖然只定義了四個方向的移動,實際操做時是能夠實現斜方向就是多個按鍵同時做用的效果的,我本身定義的另外一款還涉及到了瞬移等操做,一步步來吧,先基礎點的好。下一篇應該就是子彈模型建立與發射相關了。

 

各位大佬,都看到這了,不點個關注推薦再走嘛。

相關文章
相關標籤/搜索