1. 程式人生 > >Unity3D UGUI攝像機跟隨主角(簡明易懂)NGUI下也可以參考使用

Unity3D UGUI攝像機跟隨主角(簡明易懂)NGUI下也可以參考使用

我在這裡寫兩個方法,一種鏡頭是跟隨主角,但不隨著主角旋轉而旋轉。另一種是鏡頭是跟隨主角,並且隨著主角旋轉而旋轉。兩個方法都會用不同的方式寫。
第一種,指令碼掛在Camera下

public class CameraFollow : MonoBehaviour {

    private Transform target; //角色的Transform
    public Vector3 Offset;  //攝像機與角色的相對位置偏移距離

    void Start()
    {
        //得到角色和偏移
        target = GameObject.FindWithTag("Player"
).transform;//根據Tag獲取角色,不懂的看圖 Offset = target.transform.position - transform.position;//(如果這個不懂,可以看下面) } void Update() { //攝像機的位置等於 玩家的位置 減去 偏移距離值 transform.position = target.transform.position - Offset; //攝像機朝向角色 transform.LookAt(target); } }

這裡寫圖片描述
第二種,指令碼一樣掛著Camera下

public class CameraFollow : MonoBehaviour {

     private Transform target;
    public Vector3 offset;
    public float smoothing = 10; //移動平滑度(可有可無)

    public void Start()
    {
        target = GameObject.Find("Cube002").transform;
        //offset直接在Unity中賦值,詳細見圖
    }
    public void LateUpdate()//做攝像機平滑用LateUpdate可以讓畫面更流暢
    {
        transform.position = Vector3.Lerp(transform.position, 
        target.position + target.TransformDirection(offset),
        smoothing * Time.deltaTime);
    }
}

//這段程式碼的意思就是:攝像機從原來自身的位置出發到達目標位置(最後一個是平滑值,平滑值越大,鏡頭跟隨越快)
/*首先:offset是角色位置 - 攝像機的位置,是一個向量(方向+距離) 此時的向量是一個區域性向量(並不是世界座標下的向量)*/ /*然後:target.TransformDirection(offset)的意思就是, 將自身相對座標的方向轉換成世界座標下的方向,這樣攝像機才能保持在世界座標下跟隨角色/物體*/


紅色的線就是offset,即攝像機與物體(角色)的距離

以上就這些。

結尾:快速獲取offset;

這裡寫圖片描述
第一步:
先在Scene模式下,找到合適的螢幕位置作為攝像機的位置,然後進行上圖流程。
第二步:
將MainCamera放到需要跟隨的物體上(指令碼要事先先掛上)。
這裡寫圖片描述
第三步:把MainCamera拖回原來的位置

這樣獲取的offset的向量方便快捷,又能達到自己想要的結果,是非常好的一種方法。

相關推薦

Unity3D UGUI攝像機跟隨主角簡明易懂NGUI可以參考使用

我在這裡寫兩個方法,一種鏡頭是跟隨主角,但不隨著主角旋轉而旋轉。另一種是鏡頭是跟隨主角,並且隨著主角旋轉而旋轉。兩個方法都會用不同的方式寫。 第一種,指令碼掛在Camera下 public class CameraFollow : MonoBehavio

面向連接的Socket Server的簡單實現簡明易懂

nta on() img == con 線程關閉 sse 每一個 sockaddr http://www.cnblogs.com/worldtraveler/p/4685977.html 一、基本原理 有時候我們需要實現一個公共的模塊,需要對多個其他的模塊提供服務,最常用

Adaboost演算法原理分析和例項+程式碼簡明易懂

   【尊重原創,轉載請註明出處】 http://blog.csdn.net/guyuealian/article/details/70995333     本人最初瞭解AdaBoost演算法著實是花了幾天時間,才明白他的基本原理。也許是自己能力有限吧,很多資料也是看得懵懵懂

unity中攝像機跟隨主角攝像機穿牆,射線碰撞檢測,攝像機穿牆跟隨

這個問題,攝像機拍攝主角,當主角被牆遮蔽了視野,那麼就用正上方的點和當前相機所在位置的店為起始點和終點,從二者之間再找出三個關鍵點進行射線檢測,能看到主角的店即可作為攝像機的transform.position Vec

Unity3D ugui攝像機AABB動態剔除不可見UI

     UI 相機的可見區域之外,雖然會被顯示卡繪製剪裁掉,但是會消耗drawcall。我們可以利用AABB碰撞檢測剔除掉,相機之外的ui元素,就是active false掉。效果如下:      

Unity3D攝像機跟隨方法

using UnityEngine; using System.Collections; /// <summary> /// Camera move. /// 掛載物件:攝像機 /// 作用:攝像機跟隨人物 /// </summary> public class CameraMove

Lumious Unity3D UGUI強制重新整理Layout佈局元件

UGUI的Layout佈局元件確實節省了我們很多程式碼 如果不使用Layout元件 那麼光在計算UI的佈局上就要花費很大的功夫 特別是動態生成其元件的時候 當然,Layout元件在大多數時候是非常好用的 也有讓人頭疼的時候 比如,一個元件內需要展開或者摺疊

C# 事務處理 簡單易懂

操作 相互 用戶 因此 成功 綁定 執行 對數 序列 事務是並發控制單位,是用戶定義的一個操作序列(這些操作 要麽都做 要麽都不做)通過事務sql server 能將邏輯相關的一組操作綁定在一起,以便服務器保持數據的完整性特性:原子性(Atomicity)原子性是指事務包含

C#中對sqlserver進行增刪改查操作簡單易懂

uid 數據連接 net cti ade 密碼 logs where Go 1、添加引用using System.Data;using System.Data.SqlData;2、建立於數據庫的連接,建議將它做成一個方法,方便多次利用。string sqlconnectio

vue專案轉換成pdf檔案簡單易懂

1,新增兩個模組html2canvas和jspdf     (1)npm install --save html2canvas(將頁面html轉換成圖片)     (2)npm install --save

HDFS檔案讀寫操作 通俗易懂

首先來介紹兩個概念 ▪NameNode:領導級別。管 NameNode:領導級別。管理資料塊對映;處理客戶端的讀寫請求;配置副本策略;管理HDFS的名稱空間; DataNode:員工級別。負責儲存客戶端發來的資料塊block;執行資料塊的讀寫操作。 理資料 寫詳細步驟: 1、首先

傅立葉變換的意義和理解通俗易懂

這篇文章的核心思想就是:要讓讀者在不看任何數學公式的情況下理解傅立葉分析。 傅立葉分析不僅僅是一個數學工具,更是一種可以徹底顛覆一個人以前世界觀的思維模式。但不幸的是,傅立葉分析的公式看起來太複雜了,所以很多大一新生上來就懵圈並從此對它深惡痛絕。老實說,這麼有意思的東西居然成了大學裡的殺

SIR疾病傳播模型理論通俗易懂

youtube上看的視訊,然後截下圖做的筆記。 視訊中用的是一個學校,兒童爆發麻疹的的例子。 S是易感染的人群(即目前是健康,未感染的人), I是感染了的人群 R是感染後好了的,被移除了的人。(即不會再被感染) 他們各自的速率 由這張圖可以很清楚地看到他們的關

HTTP傳輸協議詳解簡單易懂

前言 HTTP: HyperText Transfer Protocol超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議,所有的WWW檔案都必須遵守這個標準;屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不

hdu 2022 海選女主角c語言

hdu 2022 海選女主角 點選做題網站連結 題目描述 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description potato

爬蟲IP池驗證IP是否可用簡單易懂

IP池驗證IP是否可用 使用requests模組演示程式碼 具體的ip池這裡就不演示了,無非就是在代理的網站爬取收集大量的ip進行儲存,並沒有很大的難度,這裡主要演示驗證IP可用性的方法。 import requests url = "http://www.baidu.com/"

資料庫三大正規化詳解通俗易懂

◆ 第一正規化(1NF):     強調的是列的原子性,即列不能夠再分成其他幾列。考慮這樣一個表:【聯絡人】(姓名,性別,電話)如果在實際場景中,一個聯絡人有家庭電話和公司電話,那麼這種表結構設計就沒有達到 1NF。要符合 1NF 我們只需把列(電話)拆分,即:【聯絡人】(

什麼是分散式系統通俗易懂

最近做了一些分散式的專案,但還沒有真正的理解和認識什麼是分散式,以及為什麼要這麼設計等等一系統問題,在看過大神的貼子了,如夢初醒,受益匪淺! 著作權歸作者所有。 商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 作者:林建入 連結:http://www.zhihu.c

深入理解vue中的slot與slot-scope 簡單易懂

走在前端的大道上 插槽,也就是slot,是元件的一塊HTML模板,這塊模板顯示不顯示、以及怎樣顯示由父元件來決定。 實際上,一個slot最核心的兩個問題在這裡就點出來了,是顯示不顯示和怎樣顯示。 由於插槽是一塊模板,所以,對於任何一個元件,從模板種類的角度來分,其實都可以

對於spring中ioc的理解淺顯易懂

目錄 ioc是什麼? 首先ioc是Inversion of Control的縮寫 ,翻譯成中文就是:控制反轉的意思。接下來就把這個詞拆開來解釋 如何理解“控制”? 之前我們通過 "類名 物件名 = new 類名( )"的方式進行物件的建立,也就是說