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

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

這篇具有很好參考價(jià)值的文章主要介紹了Unity實(shí)現(xiàn)2D游戲跟隨攝像機(jī)(平滑移動(dòng))。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

運(yùn)行效果

攝像機(jī)運(yùn)行效果如下所示。
unity 2dd相機(jī)平滑跟隨角色,Unity,unity,游戲,游戲引擎

玩家角色

首先創(chuàng)建一個(gè)可用的玩家角色,寫好移動(dòng)邏輯,如果要使用在Unity商店中購買的資源,可以點(diǎn)擊Window菜單欄> Package Manager選項(xiàng),來打開Package Manager窗口,如下所示,然后下載你需要的資源。
unity 2dd相機(jī)平滑跟隨角色,Unity,unity,游戲,游戲引擎
unity 2dd相機(jī)平滑跟隨角色,Unity,unity,游戲,游戲引擎
如果你沒有在資源商店的精靈資產(chǎn),可以在Hierarchy視圖,右鍵單擊,選擇“2D Object" > “Sprites” > “Capsule”。
unity 2dd相機(jī)平滑跟隨角色,Unity,unity,游戲,游戲引擎
這將會(huì)在場景中創(chuàng)建一個(gè)2D膠囊體,我們就用這個(gè)膠囊體來充當(dāng)我們的玩家角色,如下圖所示。
unity 2dd相機(jī)平滑跟隨角色,Unity,unity,游戲,游戲引擎

腳本

新建一個(gè)腳本,名叫FollowCamera,然后將該腳本掛載到Camera上。
unity 2dd相機(jī)平滑跟隨角色,Unity,unity,游戲,游戲引擎

字段

我們要?jiǎng)?chuàng)建的跟隨攝像機(jī)具有平滑移動(dòng)的功能,所以我們需要?jiǎng)?chuàng)建兩個(gè)字段,一個(gè)字段用于表示跟隨的物體,一個(gè)字段用于表示攝像機(jī)移動(dòng)的平滑程度。
聲明一個(gè)Transform類變量target,用于指定攝像機(jī)要跟隨的目標(biāo)物體,注意要聲明成public的,這樣我們可以在編輯器中將目標(biāo)物體賦值給該變量。
聲明一個(gè)float類型變量damping,用于指定跟隨的平滑程度,數(shù)值越大表示跟隨越平滑,默認(rèn)值賦值為1。

public Transform target; // 跟隨的目標(biāo)物體
public float damping = 1; // 跟隨的平滑程度

跟隨邏輯

跟隨邏輯的代碼我們放在LateUpdate() 方法中實(shí)現(xiàn),這個(gè)方法在每一幀最后被調(diào)用。

private void LateUpdate()
{
}

在LateUpdate() 方法中,首先判斷目標(biāo)物體是否存在(是否已經(jīng)賦值給target變量),如果沒有目標(biāo)物體,不進(jìn)行任何操作,避免報(bào)錯(cuò)。

if (target != null)
{
}

接下來計(jì)算攝像機(jī)應(yīng)該移動(dòng)的向量:

// 計(jì)算目標(biāo)位置在屏幕上的坐標(biāo)
Vector3 targetPosition = Camera.main.WorldToViewportPoint(target.position);
// 計(jì)算攝像機(jī)應(yīng)該移動(dòng)的向量
Vector3 delta = target.position - Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, targetPosition.z));

首先,使用Camera.main.WorldToViewportPoint()方法將目標(biāo)物體的位置轉(zhuǎn)換為視口坐標(biāo)(相對于攝像機(jī)的屏幕視圖比例)。
然后,通過計(jì)算delta向量,獲得目標(biāo)物體在視口坐標(biāo)系下的中心位置與屏幕中心位置之間的偏移量。使用Camera.main.ViewportToWorldPoint()方法將偏移量轉(zhuǎn)換為世界坐標(biāo)系下的偏移量。

接下來計(jì)算目標(biāo)位置和移動(dòng)攝像機(jī)。

// 計(jì)算攝像機(jī)的目標(biāo)位置
Vector3 destination = transform.position + delta;
// 使用平滑阻尼移動(dòng)攝像機(jī)
transform.position = Vector3.Lerp(transform.position, destination, damping * Time.deltaTime);

根據(jù)計(jì)算得到的攝像機(jī)的目標(biāo)位置,使用Vector3.Lerp()方法以平滑阻尼的方式將攝像機(jī)移動(dòng)到目標(biāo)位置。

這樣腳本就寫好了??梢允箶z像機(jī)平滑地跟隨目標(biāo)物體,并保持目標(biāo)物體在攝像機(jī)的中心位置。通過調(diào)整damping變量的值,我們還可以控制跟隨的平滑程度。

完整代碼

using UnityEngine;

public class FollowCamera: MonoBehaviour
{
    public Transform target; // 跟隨的目標(biāo)物體
    public float damping = 1; // 跟隨的平滑程度

    private void LateUpdate()
    {
        if (target != null)
        {
            // 計(jì)算目標(biāo)位置在屏幕上的坐標(biāo)
            Vector3 targetPosition = Camera.main.WorldToViewportPoint(target.position);
            // 計(jì)算攝像機(jī)應(yīng)該移動(dòng)的向量
            Vector3 delta = target.position - Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, targetPosition.z));
            // 計(jì)算攝像機(jī)的目標(biāo)位置
            Vector3 destination = transform.position + delta;
            // 使用平滑阻尼移動(dòng)攝像機(jī)
            transform.position = Vector3.Lerp(transform.position, destination, damping * Time.deltaTime);
        }
    }
}

其他相關(guān)文章連接

Unity2D實(shí)現(xiàn)左右移動(dòng)的敵人角色
Unity創(chuàng)建一個(gè)可移動(dòng)的2D角色文章來源地址http://www.zghlxwxcb.cn/news/detail-825213.html

到了這里,關(guān)于Unity實(shí)現(xiàn)2D游戲跟隨攝像機(jī)(平滑移動(dòng))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(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攝像機(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)旋轉(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ī)相對玩家的偏移

    2024年02月11日
    瀏覽(32)
  • 《游戲-02_3D-開發(fā)》之—基礎(chǔ)框架與攝像機(jī)跟隨

    《游戲-02_3D-開發(fā)》之—基礎(chǔ)框架與攝像機(jī)跟隨

    導(dǎo)入Xml文檔, ?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"? Root ? TalkInfo ? ? Item Idx=\\\"0\\\" Title=\\\"見到公子\\\" Msg=\\\"我叫粘貼,我們村叫粘家村,是這個(gè)村子的護(hù)衛(wèi),最近村子附近有倭寇出沒,請勇士出手相助!_驅(qū)逐倭寇,責(zé)無旁貸!他們的位置在哪?_他們在城堡南面_等我的好消息吧!\\\" FHead=\\\"2\\\" SH

    2024年01月25日
    瀏覽(21)
  • unity控制攝像機(jī)跟隨玩家三種辦法

    unity控制攝像機(jī)跟隨玩家三種辦法

    將相機(jī)拖到人物的游戲?qū)ο笊?,也就是讓相機(jī)成為角色的子物體,這樣相機(jī)就會(huì)跟隨角色移動(dòng) 但是這樣會(huì)存在問題 1.相機(jī)會(huì)隨著人物的翻轉(zhuǎn)而翻轉(zhuǎn) 2.相機(jī)跟隨人物沒有緩沖效果,移動(dòng)比較僵硬 代碼方式控制相機(jī)跟隨人物移動(dòng),利用Lerp函數(shù)控制相機(jī) 1.在Unity中創(chuàng)建一個(gè)腳本F

    2024年02月16日
    瀏覽(39)
  • Unity 3D 人物移動(dòng)朝向跟隨攝像機(jī)(第一人稱)

    Unity 3D 人物移動(dòng)朝向跟隨攝像機(jī)(第一人稱)

    以人物身體旋轉(zhuǎn)控制鏡頭左右滑動(dòng) 以攝像機(jī)旋轉(zhuǎn)控制鏡頭上下滑動(dòng) 首先我們要知道 攝像機(jī)是作為人物的子物體的(充當(dāng)眼睛) 所以當(dāng)人物旋轉(zhuǎn)時(shí) 攝像機(jī)會(huì)跟隨它朝相同的方向旋轉(zhuǎn)相同的角度 從而達(dá)到 眼睛(攝像機(jī))注視的方向一定是人物的正前方 那么這樣做有什么好處

    2024年02月21日
    瀏覽(26)
  • Unity【角色/攝像機(jī)移動(dòng)控制】【2.角色跟隨鼠標(biāo)轉(zhuǎn)向】

    本章代碼實(shí)現(xiàn)基于本系列的【1.角色移動(dòng)】 在前面的基礎(chǔ)上,我們在PlayerController腳本中添加如下函數(shù),隨后在update方法中調(diào)用即可: 其中mouseSensitivity是前面自定義的一個(gè)float變量,用來調(diào)節(jié)對鼠標(biāo)轉(zhuǎn)向速度,至此,當(dāng)我們轉(zhuǎn)動(dòng)鼠標(biāo),角色也會(huì)跟著轉(zhuǎn)動(dòng)

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

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

    2024年02月08日
    瀏覽(310)
  • 【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制作射擊游戲案例01(控制角色+發(fā)射子彈+攝像機(jī)跟蹤)

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

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

    2024年02月06日
    瀏覽(30)
  • unity實(shí)現(xiàn)簡單的攝像機(jī)震動(dòng)效果(包括普通攝像機(jī)和虛擬攝像機(jī))

    用代碼實(shí)現(xiàn)攝像機(jī)簡單的震動(dòng)效果

    2024年02月12日
    瀏覽(33)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包