国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

這篇具有很好參考價(jià)值的文章主要介紹了第五十一章 Unity Input Manager 輸入系統(tǒng)(下)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本章節(jié)我們就來(lái)使用水平軸和垂直軸來(lái)控制游戲物體的移動(dòng)和旋轉(zhuǎn)。我們之前大致講過(guò),游戲物體移動(dòng)最重要的是方向,速度和時(shí)間三個(gè)要素,同樣旋轉(zhuǎn)也是。接下來(lái),我們將之前創(chuàng)建的地形場(chǎng)景導(dǎo)入進(jìn)來(lái),如下所示

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

然后將之前的“MecanimDemo”工程里面的模型文件和動(dòng)畫文件拿過(guò)來(lái)使用,這里可以導(dǎo)入我自定義的“U_Character_Animatiion.unitypackage”資源包文件。

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

?第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

然后,我們將“U_Character_REF.fbx”模型拖入到場(chǎng)景中,

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

?第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

然后選中相機(jī),點(diǎn)擊菜單欄“GameObject”->“Align With View”調(diào)整Main Camera位置

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

接下來(lái), 我們創(chuàng)建一個(gè)“U_Character_Controller”動(dòng)畫控制器文件,雙擊打開它

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

然后將我們之前復(fù)制過(guò)來(lái)的兩個(gè)動(dòng)畫添加進(jìn)來(lái)

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

我們默認(rèn)動(dòng)畫是Idle休閑,然后在Idle和Run之間彼此建立過(guò)渡。接下來(lái),我們創(chuàng)建一個(gè)動(dòng)畫參數(shù)is_run,類型為bool類型,如下所示

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

接下來(lái),我們?cè)O(shè)置Idle到Run的過(guò)渡條件為is_run = true

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

然后Run到Idle的過(guò)渡條件為is_run = false

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

設(shè)置完畢后,我們將這個(gè)“U_Character_Controller.controller”文件拖拽到Animator組件的Controller項(xiàng)上面去。

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

最后,我們創(chuàng)建一個(gè)“MoveScript.cs”腳本文件來(lái)控制動(dòng)畫的播放,如下所示

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

public class MoveScript : MonoBehaviour
{
    // 動(dòng)畫播放組件
    private Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        // 獲取動(dòng)畫播放組件
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        // 按下按鍵W播放動(dòng)畫
        if (Input.GetKeyDown(KeyCode.W))
        {
            animator.SetBool("is_run", true);
        }
        // 抬起按鍵W停止播放動(dòng)畫
        if (Input.GetKeyUp(KeyCode.W))
        {
            animator.SetBool("is_run", false);
        }
    }
}

然后,我們將這個(gè)腳本附加到“U_Character_REF”游戲?qū)ο笊厦?/span>

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

我們Play運(yùn)行工程查看一下。

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

現(xiàn)在我們的動(dòng)畫播放沒有問(wèn)題了。接下來(lái),我們就開始控制角色的移動(dòng)。我們之前講過(guò),這個(gè)最好使用“Character Controller”角色控制器組件來(lái)實(shí)現(xiàn)。

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

?第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

接下來(lái),我們就來(lái)修改“MoveScript.cs”腳本文件,增加移動(dòng)代碼,如下所示

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

public class MoveScript : MonoBehaviour
{
    // 動(dòng)畫播放組件
    private Animator animator;

    // 角色控制器組件
    private CharacterController controller;

    // 定義移動(dòng)速度和旋轉(zhuǎn)速度
    private float moveSpeed = 10.0f;
    private float rotateSpeed = 2.0f;
    
    // Start is called before the first frame update
    void Start()
    {
        // 獲取動(dòng)畫播放組件
        animator = GetComponent<Animator>();

        // 獲取角色控制器組件
        controller = GetComponent<CharacterController>();
    }

    // Update is called once per frame
    void Update()
    {
        // 垂直方向的輸入(WS按鍵)控制移動(dòng)
        float v = Input.GetAxis("Vertical");
        controller.SimpleMove(transform.forward * moveSpeed * v);

        // 水平方向的輸入(AD按鍵)控制旋轉(zhuǎn)
        float h = Input.GetAxis("Horizontal");
        transform.Rotate(0, rotateSpeed * h, 0);

        // 按下按鍵W播放動(dòng)畫
        if (Input.GetKeyDown(KeyCode.W))
        {
            animator.SetBool("is_run", true);
        }
        // 抬起按鍵W停止播放動(dòng)畫
        if (Input.GetKeyUp(KeyCode.W))
        {
            animator.SetBool("is_run", false);
        }
    }
}

接下來(lái),我們就來(lái)運(yùn)行工程。

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

接下來(lái),我們來(lái)添加相機(jī)跟隨角色移動(dòng),鼠標(biāo)控制相機(jī)旋轉(zhuǎn)的代碼。以前我們是將相機(jī)放置到角色的下面(成為角色的子游戲?qū)ο螅?,這種方式雖然簡(jiǎn)單,但是存在一些問(wèn)題。這里,我們將使用代碼來(lái)控制相機(jī)跟隨角色。原理很簡(jiǎn)單,就是當(dāng)角色移動(dòng)的時(shí)候,相機(jī)也跟隨移動(dòng)。我們創(chuàng)建一個(gè)新的腳本“CameraScript.cs”文件,內(nèi)容如下

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

public class CameraScript : MonoBehaviour
{
    // 游戲角色
    private Transform player;

    // 相機(jī)控制參數(shù)
    private bool isRotating = false;
    private Vector3 offset;
    private float distance;
    private float rotateSpeed = 2.0f;

    // Start is called before the first frame update
    void Start()
    {
        // 獲取游戲角色
        player = GameObject.Find("U_Character_REF").transform;

        // 相機(jī)和游戲角色的偏移
        offset = transform.position - player.position;

        // 相機(jī)和游戲角色之間的距離
        distance = offset.magnitude;
    }

    // Update is called once per frame
    void Update()
    {
        // 鼠標(biāo)右鍵控制相機(jī)旋轉(zhuǎn)
        if(Input.GetMouseButtonDown(1)) isRotating = true;
        if(Input.GetMouseButtonUp(1)) isRotating = false;

        // 相機(jī)圍繞游戲角色旋轉(zhuǎn)
        if (isRotating)
        {
            // 圍繞游戲角色的Y軸左右旋轉(zhuǎn)
            transform.RotateAround(player.position, player.up, rotateSpeed * Input.GetAxis("Mouse X"));
            // 圍繞相機(jī)(也可以試試游戲角色)的X軸上下旋轉(zhuǎn)
            transform.RotateAround(player.position, transform.right, -rotateSpeed * Input.GetAxis("Mouse Y"));
        }

        // 根據(jù)滾輪來(lái)增加和減小這個(gè)距離
        distance += Input.GetAxis("Mouse ScrollWheel") * 1.0f;        
        offset = offset.normalized * distance;

        // 游戲角色移動(dòng)后,相機(jī)跟隨移動(dòng),保持偏移
        transform.position = player.position + offset;
    }
}

接下來(lái),我們要將這個(gè)腳本附加到相機(jī)上面。

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

接下來(lái),我們稍微調(diào)整一下視角,

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

接下來(lái),我們Play運(yùn)行整個(gè)工程

第五十一章 Unity Input Manager 輸入系統(tǒng)(下)

總結(jié):Unity推薦使用Input Manager來(lái)獲取設(shè)備的輸入信息。對(duì)于方向性輸入肯定是使用Input.GetAxis("Horizontal")和Input.GetAxis("Vertical")方法來(lái)獲取X/Y數(shù)值。這些X/Y數(shù)值可以直接用來(lái)控制游戲角色的移動(dòng)(后續(xù)章節(jié)我們會(huì)詳細(xì)介紹)。而對(duì)于按鈕的輸入,可以通過(guò)使用Input.GetButtonUp("Fire1")來(lái)獲取是否按下狀態(tài)。至于輸入軸對(duì)應(yīng)的什么類型的設(shè)備的按鍵,就可以在Input Manager來(lái)設(shè)置。可以是鍵盤,鼠標(biāo),或者游戲手柄。當(dāng)然,Unity默認(rèn)已經(jīng)給我們添加了18個(gè)輸入軸的設(shè)置。我們也可以繼續(xù)添加新的設(shè)備按鍵設(shè)置輸入軸。但是,這些設(shè)置對(duì)于我們的代碼修改則是沒有太大的影響。因?yàn)槲覀兇a中,不管使用GetAxis方法,還是GetButtonUp方法,它的參數(shù)僅僅是輸入軸的名稱而已。

本課程涉及的內(nèi)容已經(jīng)共享到百度網(wǎng)盤:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-438035.html

到了這里,關(guān)于第五十一章 Unity Input Manager 輸入系統(tǒng)(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 第五十三章 Unity 移動(dòng)平臺(tái)輸入(上)

    第五十三章 Unity 移動(dòng)平臺(tái)輸入(上)

    在移動(dòng)設(shè)備上,Input 類提供對(duì)觸摸屏、加速度計(jì)和地理/位置輸入的訪問(wèn)。這里我們簡(jiǎn)單介紹Input類對(duì)于觸摸屏的支持。Input.Touches是一個(gè)觸摸數(shù)組,每個(gè)數(shù)組元素代表著手指在屏幕上的觸碰狀態(tài)Input.Touch。Input.Touch 數(shù)據(jù)結(jié)構(gòu)表示: fingerId 觸摸索引 deltatime 從最后狀態(tài)到當(dāng)前狀態(tài)

    2024年02月03日
    瀏覽(21)
  • 第四十一章 Unity 輸入框 (Input Field) UI

    第四十一章 Unity 輸入框 (Input Field) UI

    本章節(jié)我們學(xué)習(xí)輸入框 (Input Field),它可以幫助我們獲取用戶的輸入。我們點(diǎn)擊菜單欄“GameObject”-“UI”-“Input Field”,我們調(diào)整一下它的位置,效果如下 我們?cè)趯哟蚊姘逯邪l(fā)現(xiàn),這個(gè)InputField UI元素包含兩個(gè)子元素,一個(gè)是Placeholder,另一個(gè)是Text。如下所示 同樣,我們查看

    2024年02月04日
    瀏覽(22)
  • Unity 新版輸入系統(tǒng)(Input System)

    Unity 新版輸入系統(tǒng)(Input System)

    官方教程 注意 新的輸入法系統(tǒng)需要 Unity 2019.4+ 和 .NET 4 運(yùn)行時(shí)。它不適用于 .NET 3.5 的項(xiàng)目。 教程版本:Unity 2021.3.26 導(dǎo)航欄 - Window - Package Manager 選擇 Unity Registry 在列表中找到 Input System 點(diǎn)擊 Install 安裝 點(diǎn)擊 Yes 啟用新版 Input System 等待Unity重新啟動(dòng) Unity 默認(rèn)會(huì)同時(shí)啟用舊版和

    2024年04月23日
    瀏覽(27)
  • 第五十六章 Unity 音頻播放

    第五十六章 Unity 音頻播放

    Unity可以導(dǎo)入大多數(shù)標(biāo)準(zhǔn)音頻文件格式,精通于在3D 空間中播放聲音,還可根據(jù)需要提供其他效果。雖然播放聲音是一件非常簡(jiǎn)單的事情,但是為了模擬現(xiàn)實(shí)直接中的各種聲音效果,Unity會(huì)提供各種各樣的組件來(lái)實(shí)現(xiàn)。 首先,我們需要了解“多普勒效應(yīng)”。他是一名奧地物理

    2024年02月07日
    瀏覽(29)
  • 【正點(diǎn)原子STM32連載】第十一章 按鍵輸入實(shí)驗(yàn) 摘自【正點(diǎn)原子】APM32E103最小系統(tǒng)板使用指南

    【正點(diǎn)原子STM32連載】第十一章 按鍵輸入實(shí)驗(yàn) 摘自【正點(diǎn)原子】APM32E103最小系統(tǒng)板使用指南

    1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子APM32E103最小系統(tǒng)板 2)平臺(tái)購(gòu)買地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套實(shí)驗(yàn)源碼+手冊(cè)+視頻下載地址: http://www.openedv.com/docs/boards/xiaoxitongban 上一章中介紹了GPIO的輸出模式,并用其控制LED的亮滅。在實(shí)際的應(yīng)用嘗盡中,還會(huì)需要使用到GPIO的

    2024年02月04日
    瀏覽(28)
  • 【Unity_Input System】Input System新輸入系統(tǒng)(一)

    【Unity_Input System】Input System新輸入系統(tǒng)(一)

    目錄 一、導(dǎo)入Input System包 二、使用方式1:直接從輸入設(shè)備對(duì)應(yīng)類中獲取輸入 三、使用方式2:用代碼創(chuàng)建InputAction獲取輸入 四、使用方式3:用Player Input組件獲取輸入 五、使用方式4:用Input Action Asset生成C#代碼獲取輸入 打開包管理器,搜索Input System,點(diǎn)擊右下角安裝。 安裝

    2024年02月08日
    瀏覽(24)
  • 【Unity_Input System】Input System新輸入系統(tǒng)(二)

    【Unity_Input System】Input System新輸入系統(tǒng)(二)

    目錄 六、Action Phase 七、Input Action Asset文件 1.Bindings Mode? 1Binding 2PositiveNegative Binding 3UpDownLeftRight Composite 4UpDownLeftRightForwardBackward?Composite 5Binding with one modifier 6Binding with two?modifier 2.Binding Path 3.Action Type 4.Initial State Check 5.Interaction 1Default Interaction 2Press Interaction 3Hold Inter

    2024年02月03日
    瀏覽(29)
  • 第五十八章 Unity 發(fā)布PC平臺(tái)

    第五十八章 Unity 發(fā)布PC平臺(tái)

    本章節(jié)我們介紹一些如何打包游戲到PC平臺(tái),這里重點(diǎn)介紹如何制作Windows操作系統(tǒng)下的游戲包。首先,我們創(chuàng)建一個(gè)“PcDemo”工程,然后簡(jiǎn)單布置一下場(chǎng)景內(nèi)容,如下 想要打包發(fā)布Unity項(xiàng)目,我們可以在菜單欄選擇“File”→ “Build Settings”菜單命令。 在Platform列表中顯然了我

    2024年02月11日
    瀏覽(17)
  • 第五十九章 Unity 發(fā)布Android平臺(tái)

    第五十九章 Unity 發(fā)布Android平臺(tái)

    本章節(jié)我們講解如何打包發(fā)布到安卓手機(jī)平臺(tái)。要為 Android 構(gòu)建和運(yùn)行應(yīng)用程序,必須安裝 Unity Android Build Support 平臺(tái)模塊。還需要安裝 Android 軟件開發(fā)工具包(SDK)和原生開發(fā)工具包(NDK)才能在 Android 設(shè)備上構(gòu)建和運(yùn)行代碼。默認(rèn)情況下,Unity 會(huì)安裝基于 OpenJDK 的 Java 開

    2024年02月14日
    瀏覽(27)
  • 【Unity入門計(jì)劃】基本概念(7)-Input Manager&Input類

    【Unity入門計(jì)劃】基本概念(7)-Input Manager&Input類

    目錄 1 Input Manager-Controls 控件 1.1 Key 鍵 1.2 Button 按鈕 1.3 Virtual Axis 虛擬軸(復(fù)數(shù):Axels) Name 名稱 Ngative Button, Positive Button 負(fù)/正值鍵(按鈕) 2 C#中的Input類 2.1 鍵盤的輸入(獲取鍵盤事件) Input.GetKey(string KeyName) Input.GetKeyDown(string KeyName) Input.GetKeyUp(string KeyName) 2.2 鼠標(biāo)的輸入(獲取

    2024年02月08日
    瀏覽(55)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包