2024 虛擬實境 x 人因設計 11 unity第一人稱視角

閱讀時間約 9 分鐘

剩下兩週上課囉,大家加油!!
在一開始我們在課程完成了椅子(角色的移動嘛),但遠遠的看著他移動好像缺少了一些遊戲體驗 嗎?><
這週我們就來改變遊戲的視角吧~~


raw-image

來看一下兩個版本的比較~~

原本WASD AD控制Y軸旋轉(轉頭),後來改成WASD控制平移座標,把旋轉特別移出來到滑鼠上,滑鼠可以控制Y軸及另一軸的旋轉(轉頭、仰頭低頭)

V1.0版本

public class ChairMove : MonoBehaviour
{
public float Speed = 1.0f;
private Rigidbody rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
}

// Update is called once per frame
void Update()
{
this.gameObject.transform.Translate(Input.GetAxis("Vertical") * Speed * Time.deltaTime, 0, 0);
this.gameObject.transform.Rotate(0, Input.GetAxis("Horizontal") * 60 * Time.deltaTime, 0);
BaseMove();
}

private void BaseMove()
{
if (Input.GetKeyDown(KeyCode.Space))
//if (Input.GetKeyDown("Space")) 或打這句話也行
{
rb.AddForce(new Vector2(0, 200));
}

}

}


V2.0版本

public class ChairCamera : MonoBehaviour
{
public float speed = 1.0f;
//滑鼠
private Vector2 rotation; //旋轉值
public Vector2 sensitivity; //滑鼠靈敏度
private Vector2 GetmouseInput()
{
Vector2 input = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
return input;
}
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
Camera1Move();
if (Input.GetKey(KeyCode.Mouse2))
{
MouseControl();
}
}
private void Camera1Move()
{
this.gameObject.transform.Translate(Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0, Input.GetAxis("Vertical") * speed * Time.deltaTime );

}
private void MouseControl()
{
rotation += GetmouseInput() * sensitivity * Time.deltaTime; //滑鼠移動
this.gameObject.transform.localEulerAngles = new Vector3(-rotation.y, rotation.x, 0); //滑鼠鏡頭角度
}


}

接著我們就細講囉~~

一樣先準備............一張椅子(角色)、一個不會掉下去的地板

#椅子讓他乾淨,不綁腳本(Script)在身上

raw-image

剛剛有說把滑鼠變成移動視角嘛,換句話說就是椅子就要跟相機一起。

所以就是把相機(視角)椅子(物件)用空物件(GameObject)綁一起。

raw-image
raw-image

像是這樣!!(這時候要確認一下,空物件跟相機的XYZ座標要對得上哦)

好~等等會把平移+視角的移動寫在同一個腳本,並且賦予在空物件上

新增一個腳本 叫ChairCameraMove,先把他加在Character(空物件)上


打開腳本後,我們先處理平移部分

raw-image

打個速度的公開變數,等等才可去外面方便調整

public float speed = 1.0f;


raw-image

之後寫一個移動的方法

private void CharacterMove()

{

this.gameObject.transform.Translate(Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0, Input.GetAxis("Vertical") * speed * Time.deltaTime);

}

raw-image

CharacterMove();

移動跟之前一樣,讓他每分每秒都要持續偵測,所以要寫在Update 方法內讓他跑。

不過跟之前比較不一樣。之前是直接打在Update裡面嘛,要另外寫個方法是因為,後續如果有B、C、D等等角色也想要這方法,直接呼叫方法名稱就可以用了。

raw-image

這前一個腳本打的 :)

(先試看看可不可以正常移動)


OK就繼續下一步,滑鼠移動~~

raw-image

宣告三個變數 ROTATION、SENSITIVITY、GAMEMOUSEINPUT

private Vector2 rotation; //旋轉值

public Vector2 sensitivity; //滑鼠靈敏度

private Vector2 GetmouseInput()

{

Vector2 input = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));

return input;

}

#

  • 使用 Input.GetAxis("Mouse X")Input.GetAxis("Mouse Y") 來獲取滑鼠在水平方向和垂直方向上的移動。
  • 這些輸入值被儲存在一個 Vector2 向量中並返回。



raw-image

然後寫一個方法滑鼠移動~~

private void MouseControl()

{

rotation += GetmouseInput() * sensitivity * Time.deltaTime; //滑鼠移動

this.gameObject.transform.localEulerAngles = new Vector3(-rotation.y, rotation.x, 0); //滑鼠鏡頭角度

}

    • 首先,用 GetmouseInput 方法來獲取滑鼠輸入。
    • 將得到的滑鼠輸入乘以 sensitivity,來控制旋轉的靈敏度。
    • 乘以 Time.deltaTime,以使旋轉角度與每幀之間的時間間隔成比例,保持旋轉的平滑性。
    • 最後,將計算出的旋轉增量加到 rotation 上,更新當前的旋轉值。
raw-image


  • 將更新後的旋轉值應用到當前遊戲物體的原地旋轉角度。
  • rotation.x 用來控制水平方向的旋轉(左右)。
  • rotation.y 用來控制垂直方向的旋轉(上下),並且取反(-rotation.y),這樣滑鼠向上移動時視角會向上移動,向下移動時視角會向下移動,符合一般用戶的操作習慣。

2D 3D邏輯有點不一樣 :)

#這個如果不懂正負,直接遊戲試試比較快~

raw-image


疑,等等。 +=?

+=這什麼,他是指定運算子,舉例最快~~

i=5; ....這個很直覺就是i等於5,沒錯吧

i+=5;...那這個的話大家就比較不知道了,因為我們平常不會這樣算,他就是 i=i+5,會一直壘加上去

運算式參考資料

那如果我把剛剛 rotation 的+拿掉 ,就會變成,每次動都會歸零。不適用於轉視角這~

再把Rigidbody的Rotation凍結起來~,不然撞到東西會東倒西歪

raw-image


最後成果展示,變得更讚了~

raw-image
    4會員
    20內容數
    Gavin Hsieh ㄉ基地
    留言0
    查看全部
    發表第一個留言支持創作者!
    Gavin Hsieh ㄉ基地 的其他內容
    大家注意看看,有沒有發現Collider 裡面也有一個材質(Material)? 你會發現你沒辦法貼一般漂漂釀釀的材質上去QQ 他上面是寫(Physic Material)物理材質!!?? 那物理材質在哪? 跟新增一般Material一樣路徑哦~~
    其他特殊材質調整 Particles Q:大家有沒有發現剛剛葉子是一面有顏色一面透明? A:Unity的渲染只有單面,超奇怪ㄉ啦,他軟體預設就是單面,要改成雙面也行,但會造成電腦負擔,所以只需在想要雙面渲染的物體上賦予即可,不用整個專案都給它。 單面渲染的情形 材質球著色器定義 Sh
    剛剛調了第一層Rendering Mode渲染模式的參數 進入第二層#Opaque渲染參數介紹 搭配教材一起做好ㄌ,先下載檔案樹葉葉葉🌿🌿🌿 解壓縮後把他拖移進去ASSET裡面 點開剛剛LeafPack,找到Mesh>選擇FBX>找到後拖曳到遊戲編輯畫面 部份模型( Fbx&
    材質和貼圖在遊戲開發中扮演著極為重要的角色,其決定了遊戲物件的外觀和表現。 材質(Material)在Unity中定義物體外觀和視覺特性的屬性集合。 包含了物體的顏色、光澤度、透明度、反射率等信息,可以透過調整這些屬性來改變物體在遊戲中的表現形式。舉例來說,可以創建金屬、塑料、木材等不同材質類型
    觸發器(Trigger) 是碰撞器(Collider) 的另一種型態,可製作不同的互動方式。 那我們就來看Trigger的練習吧 新建一個CUBE,一樣新增一個腳本給他~,命名EntranceTrigger 腳本打下剛剛測試的,確認可以正常運作 private void OnTriggerEn
    來做個簡單的小練習ㄅ 先來個Collider 建一個等等跟椅子互動的物件(Sphere),並給他一個材質區分顏色
    大家注意看看,有沒有發現Collider 裡面也有一個材質(Material)? 你會發現你沒辦法貼一般漂漂釀釀的材質上去QQ 他上面是寫(Physic Material)物理材質!!?? 那物理材質在哪? 跟新增一般Material一樣路徑哦~~
    其他特殊材質調整 Particles Q:大家有沒有發現剛剛葉子是一面有顏色一面透明? A:Unity的渲染只有單面,超奇怪ㄉ啦,他軟體預設就是單面,要改成雙面也行,但會造成電腦負擔,所以只需在想要雙面渲染的物體上賦予即可,不用整個專案都給它。 單面渲染的情形 材質球著色器定義 Sh
    剛剛調了第一層Rendering Mode渲染模式的參數 進入第二層#Opaque渲染參數介紹 搭配教材一起做好ㄌ,先下載檔案樹葉葉葉🌿🌿🌿 解壓縮後把他拖移進去ASSET裡面 點開剛剛LeafPack,找到Mesh>選擇FBX>找到後拖曳到遊戲編輯畫面 部份模型( Fbx&
    材質和貼圖在遊戲開發中扮演著極為重要的角色,其決定了遊戲物件的外觀和表現。 材質(Material)在Unity中定義物體外觀和視覺特性的屬性集合。 包含了物體的顏色、光澤度、透明度、反射率等信息,可以透過調整這些屬性來改變物體在遊戲中的表現形式。舉例來說,可以創建金屬、塑料、木材等不同材質類型
    觸發器(Trigger) 是碰撞器(Collider) 的另一種型態,可製作不同的互動方式。 那我們就來看Trigger的練習吧 新建一個CUBE,一樣新增一個腳本給他~,命名EntranceTrigger 腳本打下剛剛測試的,確認可以正常運作 private void OnTriggerEn
    來做個簡單的小練習ㄅ 先來個Collider 建一個等等跟椅子互動的物件(Sphere),並給他一個材質區分顏色
    你可能也想看
    Google News 追蹤
    Thumbnail
    本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
    Thumbnail
    目前越來越多人投資加密貨幣,市面上也有眾多虛擬貨幣投資交易所,新手小白入門投資虛擬貨幣Jerry建議選擇台灣本土合法的虛擬貨幣交易所會對於自身資產比較有保障,出事至少還能找得到人負責,本篇Jerry分享有在使用的台灣3家虛擬貨幣交易所,包含使用心得與Jerry專屬平台手續費優惠
    Thumbnail
    CIP表示,若越南要實現2030年離岸風電裝置容量6GW的目標,必須在2024年進行離岸風電試點開發,逐步完善相關政策與法規。
    Thumbnail
    為避免相關特別法規(包括VASP規範)頒布前存在法規適用的空窗,現階段或中短期較務實的折衷之道,最佳作法是參照本文增訂相關法條,將虛擬資產(電磁紀錄),尤其是虛擬通貨或加密貨幣等資產定性為物之動產,以示明確且為往後特別法規做鋪路及延伸適用,達到法律體系之完整性。
    Thumbnail
    2024年春節期間,涉及ACE交易所及虛擬貨幣的詐騙事件在臺灣爆發,許多人遭受詐騙集團的傷害。這篇文章對此事件的始末做了描述,提醒讀者警惕投資詐騙。
    Thumbnail
    2024 年,臺灣的虛擬貨幣 / 加密貨幣交易所需求性必定提升,不論是比特幣 ETF 的通過或者比特幣減半的利好消息。本文介紹了一些支援臺幣入金的交易所,每個都擁有獨特的特色和優勢,致力於為用戶提供更安全、更穩定的交易環境。
    Thumbnail
    文章目錄 GA4 簡介 SEO 代理商 GA4 應用 社群媒體代理商 GA4 應用 數位廣告代理商 GA4 應用 數位行銷顧問公司 GA4 應用 網站設計與開發公司 GA4 應用 影片製作公司與內容行銷代理商 GA4 應用 聯絡 TenMax 獲得免費 GA4 健檢機會 GA4
    Thumbnail
    可能包含敏感內容
    驚魂甫定送走2023年,2024年依舊充滿挑戰,此時沈思回顧「只需五瓶威士忌」推薦清單,能顯現對未來的信念,以下個人精選「2024只需五瓶威士忌」推薦清單,願所有朋友有好酒相伴順航2024年:
    Thumbnail
    在2024年,行銷將持續迎來新的挑戰和機遇。精明的行銷人士應該透過不同的渠道和工具來提升品牌的可見性並實現更高的轉換率。3種必須數量掌握的工具
    Thumbnail
    可能包含敏感內容
    送走全球烽火的2023,航向未知的2024年,思考一下:如果都喝好市多買自有品牌柯克蘭威士忌,能不能又撿便宜、又兼顧喝酒品味需求?以下是「2024只需五瓶好市多威士忌」的推薦清單:
    Thumbnail
    可能包含敏感內容
    近年台灣蘭姆酒品牌激增,蘭姆酒在台灣均價低於威士忌,漫長濕熱的日子裡,較低價格讓純飲與調酒都適合的蘭姆酒,給烈酒迷更多飲酒變化彈性,以下是2024只需五瓶蘭姆酒推薦清單,乾杯!
    Thumbnail
    本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
    Thumbnail
    目前越來越多人投資加密貨幣,市面上也有眾多虛擬貨幣投資交易所,新手小白入門投資虛擬貨幣Jerry建議選擇台灣本土合法的虛擬貨幣交易所會對於自身資產比較有保障,出事至少還能找得到人負責,本篇Jerry分享有在使用的台灣3家虛擬貨幣交易所,包含使用心得與Jerry專屬平台手續費優惠
    Thumbnail
    CIP表示,若越南要實現2030年離岸風電裝置容量6GW的目標,必須在2024年進行離岸風電試點開發,逐步完善相關政策與法規。
    Thumbnail
    為避免相關特別法規(包括VASP規範)頒布前存在法規適用的空窗,現階段或中短期較務實的折衷之道,最佳作法是參照本文增訂相關法條,將虛擬資產(電磁紀錄),尤其是虛擬通貨或加密貨幣等資產定性為物之動產,以示明確且為往後特別法規做鋪路及延伸適用,達到法律體系之完整性。
    Thumbnail
    2024年春節期間,涉及ACE交易所及虛擬貨幣的詐騙事件在臺灣爆發,許多人遭受詐騙集團的傷害。這篇文章對此事件的始末做了描述,提醒讀者警惕投資詐騙。
    Thumbnail
    2024 年,臺灣的虛擬貨幣 / 加密貨幣交易所需求性必定提升,不論是比特幣 ETF 的通過或者比特幣減半的利好消息。本文介紹了一些支援臺幣入金的交易所,每個都擁有獨特的特色和優勢,致力於為用戶提供更安全、更穩定的交易環境。
    Thumbnail
    文章目錄 GA4 簡介 SEO 代理商 GA4 應用 社群媒體代理商 GA4 應用 數位廣告代理商 GA4 應用 數位行銷顧問公司 GA4 應用 網站設計與開發公司 GA4 應用 影片製作公司與內容行銷代理商 GA4 應用 聯絡 TenMax 獲得免費 GA4 健檢機會 GA4
    Thumbnail
    可能包含敏感內容
    驚魂甫定送走2023年,2024年依舊充滿挑戰,此時沈思回顧「只需五瓶威士忌」推薦清單,能顯現對未來的信念,以下個人精選「2024只需五瓶威士忌」推薦清單,願所有朋友有好酒相伴順航2024年:
    Thumbnail
    在2024年,行銷將持續迎來新的挑戰和機遇。精明的行銷人士應該透過不同的渠道和工具來提升品牌的可見性並實現更高的轉換率。3種必須數量掌握的工具
    Thumbnail
    可能包含敏感內容
    送走全球烽火的2023,航向未知的2024年,思考一下:如果都喝好市多買自有品牌柯克蘭威士忌,能不能又撿便宜、又兼顧喝酒品味需求?以下是「2024只需五瓶好市多威士忌」的推薦清單:
    Thumbnail
    可能包含敏感內容
    近年台灣蘭姆酒品牌激增,蘭姆酒在台灣均價低於威士忌,漫長濕熱的日子裡,較低價格讓純飲與調酒都適合的蘭姆酒,給烈酒迷更多飲酒變化彈性,以下是2024只需五瓶蘭姆酒推薦清單,乾杯!