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

Unity角色或攝像機(jī)移動(dòng)和旋轉(zhuǎn)的控制腳本

這篇具有很好參考價(jià)值的文章主要介紹了Unity角色或攝像機(jī)移動(dòng)和旋轉(zhuǎn)的控制腳本。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

該腳本掛載到需要被移動(dòng)、旋轉(zhuǎn)控制的物體身上,也可以之間掛在到攝像機(jī)上!

掛載到攝像機(jī)上可以實(shí)現(xiàn)第一人稱視角控制!

掛載到物體身上,配合攝像機(jī)跟蹤腳本可以實(shí)現(xiàn),第三人稱視角控制!?

第一人稱視角

將角色控制腳本掛給攝像機(jī)即可!

Unity角色或攝像機(jī)移動(dòng)和旋轉(zhuǎn)的控制腳本,unity,游戲引擎

以下是角色控制腳本:

// 導(dǎo)入U(xiǎn)nity的命名空間,以便我們可以使用Unity的類和方法
using System.Collections;

// 導(dǎo)入U(xiǎn)nity的Generic Collections命名空間,以便我們可以使用Generic Collections類和方法
using System.Collections.Generic;

// 導(dǎo)入U(xiǎn)nityEngine命名空間,這個(gè)命名空間包含了很多Unity的類和方法
using UnityEngine;

// 定義一個(gè)名為RotateControl的公共類,這個(gè)類繼承自MonoBehaviour類
// MonoBehaviour類是Unity中的基礎(chǔ)類,用于讓游戲?qū)ο蠛推渌M件進(jìn)行交互
public class RotateControl : MonoBehaviour
{
    // 這個(gè)注釋是對(duì)該腳本作用的簡(jiǎn)單描述
    // 這個(gè)腳本來通過鼠標(biāo)左右滑動(dòng)和上下滑動(dòng)控制攝像機(jī)或者主角進(jìn)行選擇
    /*  
     * 下面的注釋是對(duì)整個(gè)流程的描述,包括檢測(cè)用戶是否有滑動(dòng)鼠標(biāo)以及滑動(dòng)后如何旋轉(zhuǎn)的說明
     */
    // 定義一個(gè)浮點(diǎn)型變量RotionXX,這個(gè)變量用于存儲(chǔ)旋轉(zhuǎn)角度(在X軸上)
    float RotionXX;

    // 定義一個(gè)浮點(diǎn)型變量RotionYY,這個(gè)變量用于存儲(chǔ)旋轉(zhuǎn)角度(在Y軸上)
    float RotionYY;

    // 定義一個(gè)公共浮點(diǎn)型變量roatespeed,這個(gè)變量用于控制旋轉(zhuǎn)的速度,默認(rèn)值為10
    public float roatespeed = 10f;

    // Update方法在Unity中是每個(gè)幀都會(huì)調(diào)用的方法,類似于C++中的每幀都會(huì)執(zhí)行一次的函數(shù)
    void Update()
    {
        // Input.GetAxis("Mouse X")獲取鼠標(biāo)在X軸上的移動(dòng)量,這個(gè)值是-1(左),0(無移動(dòng))或1(右)
        float RotionY = Input.GetAxis("Mouse X");

        // Input.GetAxis("Mouse Y")獲取鼠標(biāo)在Y軸上的移動(dòng)量,這個(gè)值是-1(上),0(無移動(dòng))或1(下)
        float RotionX = Input.GetAxis("Mouse Y");

        // 下面的代碼是計(jì)算旋轉(zhuǎn)角度并存儲(chǔ)到RotionXX和RotionYY中
        // Time.deltaTime獲取上一幀和當(dāng)前幀之間的時(shí)間差,乘以roatespeed可以得到每幀旋轉(zhuǎn)的角度
        // 因?yàn)槊繋臅r(shí)間可能不同,使用Time.deltaTime可以保證在不同幀率下旋轉(zhuǎn)的速度是一致的
        //四元數(shù)
        RotionXX += -RotionX * Time.deltaTime * roatespeed;
        RotionYY += RotionY * Time.deltaTime * roatespeed;

        // 這行代碼將RotionXX的值限制在-45和45之間,超過這個(gè)范圍的數(shù)值會(huì)被調(diào)整到這個(gè)范圍之內(nèi)
        RotionXX = Mathf.Clamp(RotionXX, -45f, 45f);

        // 打印出當(dāng)前的旋轉(zhuǎn)角度RotionXX的值,幫助我們調(diào)試程序
        Debug.Log("角度" + RotionXX);

        // 這行代碼將計(jì)算出來的旋轉(zhuǎn)角度應(yīng)用到對(duì)象的transform上,實(shí)現(xiàn)旋轉(zhuǎn)效果
        this.transform.rotation = Quaternion.Euler(RotionXX, RotionYY, 0);
    }
}

第三人稱

將上面, 角色控制腳本掛給模型,并添加一個(gè)攝像機(jī)追蹤空物體,便于攝像機(jī)有一個(gè)追蹤目標(biāo),然后把下面腳本掛給攝像機(jī)

Unity角色或攝像機(jī)移動(dòng)和旋轉(zhuǎn)的控制腳本,unity,游戲引擎

附贈(zèng)攝像機(jī)跟蹤腳本(如果你角色控制腳本給了攝像機(jī),那么這個(gè)腳本就不需要了)

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

public class CameraFollow : MonoBehaviour
{
? ? public Transform target; // 跟蹤目標(biāo)
? ? public float smoothTime = 0.3f; // 平滑時(shí)間

? ? private Vector3 velocity = Vector3.zero;

? ? void Update()
? ? {
? ? ? ? 計(jì)算新的位置
? ? ? ? Vector3 targetPosition = target.TransformPoint(new Vector3(0,1,-5));//本地坐標(biāo)轉(zhuǎn)世界坐標(biāo)
? ? ? ? 平滑移動(dòng)到新的位置
? ? ? ? transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
? ? ? ? transform.LookAt(target);
? ? }
}

附上一個(gè)官方的攝像機(jī)視角控制腳本,這個(gè)腳本需要掛在到攝像機(jī)

using UnityEngine;

namespace Unity.AI.Navigation.Samples
{
    /// <summary>
    /// Manipulating the camera with standard inputs
    /// </summary>
    public class FreeCam : MonoBehaviour
    {
        public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
        public RotationAxes axes = RotationAxes.MouseXAndY;
        public float sensitivityX = 15F;
        public float sensitivityY = 15F;
    
        public float minimumX = -360F;
        public float maximumX = 360F;
    
        public float minimumY = -60F;
        public float maximumY = 60F;
    
        public float moveSpeed = 1.0f;
    
        public bool lockHeight = false;
    
        float rotationY = 0F;
    
        void Update()
        {
            if (axes == RotationAxes.MouseXAndY)
            {
                float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
    
                rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
                rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);
    
                transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
            }
            else if (axes == RotationAxes.MouseX)
            {
                transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
            }
            else
            {
                rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
                rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);
    
                transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
            }
    
            var xAxisValue = Input.GetAxis("Horizontal");
            var zAxisValue = Input.GetAxis("Vertical");
            if (lockHeight)
            {
                var dir = transform.TransformDirection(new Vector3(xAxisValue, 0.0f, zAxisValue) * moveSpeed);
                dir.y = 0.0f;
                transform.position += dir;
            }
            else
            {
                transform.Translate(new Vector3(xAxisValue, 0.0f, zAxisValue) * moveSpeed);
            }
        }
    }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-736190.html

到了這里,關(guān)于Unity角色或攝像機(jī)移動(dòng)和旋轉(zhuǎn)的控制腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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攝像機(jī)平滑移動(dòng)旋轉(zhuǎn)

    Unity中使用Vector3.SmoothDamp(平滑阻尼)方法進(jìn)行跟隨移動(dòng),可以使跟隨看起來很平滑,而不顯得突兀,最典型的示例就是相機(jī)平滑跟隨角色移動(dòng)。 SmoothDamp (current : Vector3, target : Vector3, ref currentVelocity : Vector3, smoothTime ) ?

    2024年02月11日
    瀏覽(21)
  • 【Unity】攝像機(jī)跟隨鼠標(biāo)移動(dòng)以物體為中心旋轉(zhuǎn) 物體根據(jù)視線方向移動(dòng)

    【Unity】攝像機(jī)跟隨鼠標(biāo)移動(dòng)以物體為中心旋轉(zhuǎn) 物體根據(jù)視線方向移動(dòng)

    描述 實(shí)現(xiàn)攝像機(jī)根據(jù)鼠標(biāo)移動(dòng)跟隨物體旋轉(zhuǎn),以攝像機(jī)前物體為中心,攝像機(jī)圍繞物體旋轉(zhuǎn),并使攝像機(jī)時(shí)刻指向物體 實(shí)現(xiàn)效果 Unity 組件設(shè)置 Camera 組件設(shè)置 Body 組件設(shè)置 實(shí)現(xiàn)代碼 CameraRotateMove.cs 攝像機(jī)跟隨和旋轉(zhuǎn) move_better.cs 物體根據(jù)按鍵移動(dòng)

    2024年02月08日
    瀏覽(41)
  • unity-第三人稱攝像機(jī)簡(jiǎn)單腳本(包括跟隨、視角旋轉(zhuǎn)、滾輪縮放)

    本菜鳥為了實(shí)現(xiàn)第三人稱視角攝像機(jī)的主要功能,踩了很多意料之外的坑,終于搞出一份自覺完美的腳本,分享一下。 功能:攝像機(jī)跟隨、鼠標(biāo)滾輪縮放視野、長(zhǎng)按鼠標(biāo)右鍵左右旋轉(zhuǎn)視野、長(zhǎng)按鼠標(biāo)中鍵上下旋轉(zhuǎn)視野。 此腳本掛接在攝像機(jī)上,有詳細(xì)注釋,可直接運(yùn)行。

    2024年02月08日
    瀏覽(310)
  • Unity制作射擊游戲案例01(控制角色+發(fā)射子彈+攝像機(jī)跟蹤)

    Unity制作射擊游戲案例01(控制角色+發(fā)射子彈+攝像機(jī)跟蹤)

    //【業(yè)務(wù)邏輯】這個(gè)腳本用來1.控制物體移動(dòng)旋轉(zhuǎn)(WASD)、? ?2.發(fā)射子彈(空格鍵) //【程序邏輯2】 首先檢測(cè)用戶沒有按下空格鍵 2.如果按下呢執(zhí)行發(fā)射子彈函數(shù)?? ?3.克隆子彈 4.讓克隆的子彈往前跑 為子彈模板添加剛體,并且限制旋轉(zhuǎn) 這個(gè)腳本需要掛在到攝像機(jī),里面談

    2024年02月06日
    瀏覽(30)
  • Unity 控制攝像機(jī)鏡頭的上下左右移動(dòng)

    ? ? ? ? private float FollowPosx,FollowPosy; ? ? private float moveAmount=5; ? //控制鏡頭的移動(dòng)速度 ? ? // Update is called once per frame ? ? void Update() ? ? { ? ? ? ? if (Input.mousePosition.y Screen.height * 0.9)//如果鼠標(biāo)位置在頂部,就向上移動(dòng) ? ? ? ? { ? ? ? ? ? ? FollowPosy += moveAmount * Time.delta

    2024年02月11日
    瀏覽(26)
  • unity攝像機(jī)跟隨鼠標(biāo)旋轉(zhuǎn)

    ?float vertical = Input.GetAxis(\\\"Mouse X\\\") float horizontal = Input.GetAxis(\\\"Mouse Y\\\") 第二種 通過 計(jì)算坐標(biāo)時(shí)只需要通過 Quaternion.Euler 來取得旋轉(zhuǎn)四元數(shù),以玩家為原點(diǎn)衍生一條(0,0,-1)的向量并乘上四元數(shù)以旋轉(zhuǎn)至 Player 指向攝像機(jī)的方向,最后乘上 Distance ,即可得到攝像機(jī)相對(duì)玩家的偏移

    2024年02月11日
    瀏覽(32)
  • Unity三種攝像機(jī)旋轉(zhuǎn)方式

    1.按下鼠標(biāo)右鍵可以實(shí)現(xiàn)攝像機(jī)上下左右旋轉(zhuǎn) 2.按下鼠標(biāo)右鍵可以實(shí)現(xiàn)攝像機(jī)圍繞某個(gè)物體上下左右旋轉(zhuǎn) 3.攝像頭始終跟隨在某個(gè)物體的正后方

    2024年02月13日
    瀏覽(24)
  • 【UE4】 通過按鈕點(diǎn)擊實(shí)現(xiàn)攝像機(jī)的切換 并通過鼠標(biāo)控制新攝像機(jī)的旋轉(zhuǎn)

    【UE4】 通過按鈕點(diǎn)擊實(shí)現(xiàn)攝像機(jī)的切換 并通過鼠標(biāo)控制新攝像機(jī)的旋轉(zhuǎn)

    首先創(chuàng)建了4個(gè)Actor藍(lán)圖類 每個(gè)藍(lán)圖類內(nèi)只擁有一個(gè)攝像機(jī)組件 將每個(gè)actor藍(lán)圖類擺放到場(chǎng)景的合適位置 在關(guān)卡藍(lán)圖中創(chuàng)建自定義事件,當(dāng)該事件觸發(fā)時(shí)切換攝像機(jī) 創(chuàng)建一個(gè)控件藍(lán)圖,在控件藍(lán)圖中創(chuàng)建如下5個(gè)按鈕,并創(chuàng)建點(diǎn)擊事件。按鈕分別表示車上的4個(gè)鏡頭和車外自由

    2023年04月09日
    瀏覽(100)
  • Unity丨移動(dòng)相機(jī)朝向目標(biāo)并確定目標(biāo)在攝像機(jī)可視范圍內(nèi)丨攝像機(jī)注釋模型丨攝像機(jī)移動(dòng)丨不同尺寸模型優(yōu)化丨

    Unity丨移動(dòng)相機(jī)朝向目標(biāo)并確定目標(biāo)在攝像機(jī)可視范圍內(nèi)丨攝像機(jī)注釋模型丨攝像機(jī)移動(dòng)丨不同尺寸模型優(yōu)化丨

    本文提供的功能是攝像機(jī)朝向目標(biāo)移動(dòng),并確定整個(gè)目標(biāo)出現(xiàn)在攝像機(jī)視角內(nèi),針對(duì)不同尺寸的模型優(yōu)化。 提示:這里可以添加技術(shù)名詞解釋 直接上代碼 后期可擴(kuò)展功能:類似點(diǎn)擊目標(biāo)完成視角移動(dòng)等。

    2024年02月07日
    瀏覽(34)
  • Unity實(shí)現(xiàn)2D游戲跟隨攝像機(jī)(平滑移動(dòng))

    Unity實(shí)現(xiàn)2D游戲跟隨攝像機(jī)(平滑移動(dòng))

    攝像機(jī)運(yùn)行效果如下所示。 首先創(chuàng)建一個(gè)可用的玩家角色,寫好移動(dòng)邏輯,如果要使用在Unity商店中購(gòu)買的資源,可以點(diǎn)擊Window菜單欄 Package Manager選項(xiàng),來打開Package Manager窗口,如下所示,然后下載你需要的資源。 如果你沒有在資源商店的精靈資產(chǎn),可以在Hierarchy視圖,右

    2024年02月19日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包