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

Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem

這篇具有很好參考價(jià)值的文章主要介紹了Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

Unity版本:2019.2.3f1

目錄

?安裝InputSystem

1:創(chuàng)建InputHander.cs腳本?掛載到Player物體上?獲取鍵盤輸入WADS

2.創(chuàng)建PlayerLocomotion.cs掛載到Player物體上,控制物體移動轉(zhuǎn)向


?

?安裝InputSystem

菜單欄/Window/Package Manager/Input System

Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

?工程面板內(nèi)?右鍵-->創(chuàng)建Input Actions?Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

選中New Controls改名為PlayerControls?然后屬性?面板按下Edit assetUnity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

?Action Maps添加:PlayerMovementUnity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

Actions添加:New action?改名為MovementAction?

Properties項(xiàng)? ? 修改ActionType=Pass Through

? ? ? ? ? ? ? ? ? ? ? ? 修改ControlType= Vector2

Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

在MovementAction項(xiàng)點(diǎn)擊+號?選擇Add 2D Vector Composite

?Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

?生成WASD

Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

綁定Up、Down、Left、Right,如此類推

Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

回到PlayerControls屬性面板?勾選Generate C# Class[*]

?Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

?工程面板就生成了一份?PlayerControls.cs?腳本,先不管它?Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

?

?

然后創(chuàng)建2個(gè)腳本掛到Player物體上

Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem,Unity,C#,unity,游戲引擎

1:創(chuàng)建InputHander.cs腳本?掛載到Player物體上?獲取鍵盤輸入WADS

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

public class InputHander : MonoBehaviour
{

    public float horizontal;
    public float vertical;
    public float moveAmount;
    public float mouseX;
    public float mouseY;

    PlayerControls inputActions;//聲明 InputSystem的腳本對象
    Vector2 movementInput;//存儲 WASD輸入的值

    public void OnEnable()
    {
        //獲取設(shè)備上的輸入
        if (inputActions == null)
        {
            inputActions = new PlayerControls();
            //綁定輸入的值
            inputActions.PlayerMovement.MovementAction.performed += outputActions => movementInput = outputActions.ReadValue<Vector2>();
        }

        inputActions.Enable();//啟用
    }

    public void OnDisable()
    {
        inputActions.Disable();//禁用
    }


    public void TickInputt(float delta)
    {
        MoveInput(delta);
    }

    public void MoveInput(float delta) {

        horizontal = movementInput.x;
        vertical = movementInput.y;
        moveAmount = Mathf.Clamp01(Mathf.Abs(horizontal) + Mathf.Abs(vertical));
    }

}

2.創(chuàng)建PlayerLocomotion.cs掛載到Player物體上,控制物體移動轉(zhuǎn)向

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

public class PlayerLocomotion : MonoBehaviour
{

    InputHander inputHander;
    Vector3 moveDirection;

    public CapsuleCollider capsuleCollider;
    public new Rigidbody rigidbody;
    Vector2 movementInput;//存儲 WASD輸入的值
    Transform cameraObject;

    [HideInInspector]
    public Transform myTransform;

    [Header("Stats")]
    [SerializeField]
    float movementSpeed = 5;
    [SerializeField]
    float rotationSpeed = 10;



    // Start is called before the first frame update
    void Start()
    {
        rigidbody = GetComponent<Rigidbody>();
        if (rigidbody==null)
        {
            rigidbody = gameObject.AddComponent<Rigidbody>();
            rigidbody.constraints = RigidbodyConstraints.FreezeRotation;
            
        }
        capsuleCollider = GetComponent<CapsuleCollider>();
        if (capsuleCollider==null)
        {
            capsuleCollider = gameObject.AddComponent<CapsuleCollider>();
            capsuleCollider.center = new Vector3(0, 1, 0);
            capsuleCollider.radius = 0.5f;
            capsuleCollider.height = 2;
            capsuleCollider.direction = 1;
        }
       
        inputHander = GetComponent<InputHander>();
        cameraObject = Camera.main.transform;
        myTransform = transform;
    }

    // Update is called once per frame
    void Update()
    {
        float delta = Time.deltaTime;
        inputHander.TickInputt(delta);

        moveDirection = cameraObject.forward * inputHander.vertical;
        moveDirection += cameraObject.right * inputHander.horizontal;
        moveDirection.Normalize();

        float speed = movementSpeed;
        moveDirection *= speed;

        //移動
        Vector3 projectedVelocity = Vector3.ProjectOnPlane(moveDirection, new Vector3(0, 0, 0));
        rigidbody.velocity = projectedVelocity;

        HandleRotation(delta);
    }

    //轉(zhuǎn)向
    private void HandleRotation(float delta) {

        Vector3 targerDir = Vector3.zero;

        targerDir = cameraObject.forward * inputHander.vertical;
        targerDir += cameraObject.right * inputHander.horizontal;

        targerDir.Normalize();
        targerDir.y = 0;

        if (targerDir == Vector3.zero)
        {
            targerDir = myTransform.forward;
        }

        Quaternion tr = Quaternion.LookRotation(targerDir);
        Quaternion targetRotation = Quaternion.Slerp(myTransform.rotation, tr, rotationSpeed * delta);

        myTransform.rotation = targetRotation;
    
    }
}

完成文章來源地址http://www.zghlxwxcb.cn/news/detail-739735.html

到了這里,關(guān)于Unity解決:3D開發(fā)模式第三人稱視角 WASD控制角色移動旋轉(zhuǎn) 使用InputSystem的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Unity筆記:第三人稱Starter Asset代碼學(xué)習(xí)

    Unity筆記:第三人稱Starter Asset代碼學(xué)習(xí)

    自己看了幾篇文章和視頻,寫了個(gè)人物移動腳本,有很多瑕疵。這個(gè)時(shí)候研究一下優(yōu)秀的代碼總是好的,Unity官方有Third Person Starter Asset可供研究,其官方商店頁面是:Starter Assets - ThirdPerson | Updates in new CharacterController package 官方B站介紹視頻是:Bilibili - [Unity教程]-Starter Asset

    2024年02月22日
    瀏覽(29)
  • Unity 第三人稱 玩家控制器+相機(jī)控制器

    Unity 第三人稱 玩家控制器+相機(jī)控制器

    今天給大家分享一個(gè)簡單的Unity第三人稱視角下玩家控制器和相機(jī)控制器的腳本編寫方法。 ? 效果如下: 主要分三部分實(shí)現(xiàn):人物旋轉(zhuǎn)、人物移動、相機(jī)旋轉(zhuǎn)。 1.人物移動: 首先獲取到人物水平和垂直移動的參數(shù): 因?yàn)槿宋镆苿拥姆较蚋鷶z像頭一致,所以需要根據(jù)攝像頭的

    2024年02月06日
    瀏覽(96)
  • Unity第三人稱如何讓人物始終朝向相機(jī)方向移動

    Unity第三人稱如何讓人物始終朝向相機(jī)方向移動

    不知道如何制作簡易第三人稱相機(jī)的同學(xué)可以看我的這篇文章:Unity如何實(shí)現(xiàn)第三人稱相機(jī)跟隨 我們在開發(fā)第三人稱游戲過程中很容易遇到:我們的玩家角色,他面對北方,背后有一臺攝像機(jī),正巧也是面對北方。現(xiàn)在,他向右轉(zhuǎn)90度,面對東方。此時(shí)如果讓他向前走,那么

    2024年02月06日
    瀏覽(47)
  • UE4第三人稱多人聯(lián)機(jī)游戲開發(fā)01

    UE4第三人稱多人聯(lián)機(jī)游戲開發(fā)01

    單人游戲 中一臺電腦只有一個(gè)游戲會話(Session),我們可以通過在同一電腦中分屏并用不同的輸入設(shè)備,單人游戲不需要使用互聯(lián)網(wǎng)。 多人游戲 中,游戲?qū)嵗讵?dú)立的兩臺電腦中運(yùn)行,而由于玩家在不斷地輸入指令,因此我們需要將一個(gè)游戲?qū)嵗械男畔⑼ㄟ^互聯(lián)網(wǎng)傳輸?shù)?/p>

    2024年02月07日
    瀏覽(165)
  • UE4/5 實(shí)現(xiàn)多相機(jī)模式切換(第一人稱切第三人稱等)

    UE4/5 實(shí)現(xiàn)多相機(jī)模式切換(第一人稱切第三人稱等)

    對于多相機(jī)模式的切換,網(wǎng)上普遍使用SetViewTargetWithBlend這個(gè)節(jié)點(diǎn),但這個(gè)節(jié)點(diǎn)很多相機(jī)參數(shù)不能設(shè)置,也不適合運(yùn)用于游戲中多相機(jī)模式切換的場合。 UE中World Settings里的玩家控制器中,默認(rèn)的控制器行為會對當(dāng)前開啟的Camera組件進(jìn)行激活處理: 因此,默認(rèn)綁在Pawn上的相機(jī)

    2024年02月11日
    瀏覽(22)
  • ue4第三人稱第一人稱切換。

    ue4第三人稱第一人稱切換。

    1.默認(rèn)第三人稱。將遠(yuǎn)點(diǎn)的相機(jī)設(shè)置auto active為true。近點(diǎn)相機(jī)設(shè)置為false。 ? 在做好的actor中設(shè)置camera的active,和人物是否隱藏。 ? ?通過v鍵來切換第一人稱和第二人稱。

    2024年02月12日
    瀏覽(92)
  • VR工地安全虛擬現(xiàn)實(shí)體驗(yàn):多種事故模擬,第三人稱回看

    VR工地安全虛擬現(xiàn)實(shí)體驗(yàn):多種事故模擬,第三人稱回看

    建筑工地五大傷害是指:高處墜落、坍塌、物體打擊、機(jī)械傷害、觸電。利用VR(虛擬現(xiàn)實(shí))技術(shù)體驗(yàn)建筑工地五大傷害,可以為建筑工人提供更真實(shí)、更安全的工作環(huán)境,同時(shí)也可以幫助他們更好地了解和掌握工作技能。 以下是 VR工地安全虛擬現(xiàn)實(shí)體驗(yàn)軟件 的價(jià)值: 首先,通

    2024年02月12日
    瀏覽(19)
  • Unity 3D 實(shí)現(xiàn)第一人稱視角

    Unity 3D 實(shí)現(xiàn)第一人稱視角

    第一人稱視角的運(yùn)用十分廣泛,常見于我的世界、APEX、守望先鋒以及許多FPS(First-Person Shooting第一人稱射擊)等游戲。 那么,這類第一人稱視角是如何實(shí)現(xiàn)的呢? 其實(shí)并不復(fù)雜, 一個(gè)人物模型 , 一個(gè)攝像機(jī) , 一個(gè)腳本 ,便可輕松實(shí)現(xiàn)。 在 Hierarchy 欄目右擊隨機(jī)創(chuàng)建一個(gè)

    2024年02月11日
    瀏覽(21)
  • Unity 2D視角下模擬3D環(huán)境和地形

    Unity 2D視角下模擬3D環(huán)境和地形

    2D游戲若想模仿3D游戲的環(huán)境,一種很好的方案便是“2.5D”。 所謂2.5D,通常的理解是相機(jī)固定俯視的游戲視角。在此視角下,人物可以在x、y、z三個(gè)軸上移動,如此便能模仿3D游戲的環(huán)境,而美術(shù)成本要比3D低很多。 2.5D具體實(shí)現(xiàn)的方式也分多種,如2D角色+3D場景、3D角色+2D場

    2024年02月06日
    瀏覽(35)
  • Unity3D 進(jìn)行任意角度調(diào)節(jié)視角

    Unity3D 進(jìn)行任意角度調(diào)節(jié)視角

    有很多小伙伴一定在初學(xué)Unity3D時(shí)遇到不小心將窗口視角打亂的情形, 例如不小心點(diǎn)擊右上角的XYZ軸導(dǎo)致視角不同, 圖1: 圖2 如何恢復(fù)至初始角度呢?比較糾結(jié)。其實(shí)不用恢復(fù)至初始角度,你點(diǎn)擊的那個(gè)坐標(biāo)按鈕,表示你想從不同的角度去看這個(gè)terrain(地形),所以可以按

    2024年02月11日
    瀏覽(88)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包