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
留言
avatar-img
留言分享你的想法!
avatar-img
Gavin Hsieh ㄉ基地
4會員
20內容數
Gavin Hsieh ㄉ基地
Gavin Hsieh ㄉ基地的其他內容
2024/06/05
我們完成了保齡球發射,再來來處理球瓶囉!! 在這之前,我們在學一個程式語言中也算蠻重要的語法....,然後看看怎麼運用到遊戲裡面 :) For迴圈 (好像會很麻煩,但我們還是痛苦一下才會進化><)
2024/06/05
我們完成了保齡球發射,再來來處理球瓶囉!! 在這之前,我們在學一個程式語言中也算蠻重要的語法....,然後看看怎麼運用到遊戲裡面 :) For迴圈 (好像會很麻煩,但我們還是痛苦一下才會進化><)
2024/05/29
上週的作業保齡球規則 Student A 角色:玩家1、玩具球、娃娃A、娃娃B、娃娃C 規則:打擊娃娃,要贏得遊戲需要使用玩具球打擊到娃娃,共有三次機會可以打擊,全部娃娃都有被打擊到就能贏得勝利,如三次機會中只打擊到其中一隻/兩隻娃娃,另外沒被打擊到的娃娃會消失,遊戲立即結束! Studen
2024/05/29
上週的作業保齡球規則 Student A 角色:玩家1、玩具球、娃娃A、娃娃B、娃娃C 規則:打擊娃娃,要贏得遊戲需要使用玩具球打擊到娃娃,共有三次機會可以打擊,全部娃娃都有被打擊到就能贏得勝利,如三次機會中只打擊到其中一隻/兩隻娃娃,另外沒被打擊到的娃娃會消失,遊戲立即結束! Studen
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
提供一條簡單公式、一套盤點思路,幫助你快速算出去日本自助旅遊需要準備多少日幣現金!
Thumbnail
提供一條簡單公式、一套盤點思路,幫助你快速算出去日本自助旅遊需要準備多少日幣現金!
Thumbnail
https://www.youtube.com/watch?v=0L2OgNQDzTc 之前看了啾啾鞋這部影片,裡面說退坑一款手遊,也說到一些觀念,就如下圖這樣
Thumbnail
https://www.youtube.com/watch?v=0L2OgNQDzTc 之前看了啾啾鞋這部影片,裡面說退坑一款手遊,也說到一些觀念,就如下圖這樣
Thumbnail
介紹一個優質的遊戲知識部落格:遊戲設計中藥鋪,其中「Game Design 資源分享表」十分推薦遊戲開發者閱讀。另外提到Gamker攻壳是一個專業的遊戲評鑑頻道,其深入的評論幫助作者入坑《健身環大冒險》。作者在後記也分享了自己在遊戲開發上的經歷和挑戰。
Thumbnail
介紹一個優質的遊戲知識部落格:遊戲設計中藥鋪,其中「Game Design 資源分享表」十分推薦遊戲開發者閱讀。另外提到Gamker攻壳是一個專業的遊戲評鑑頻道,其深入的評論幫助作者入坑《健身環大冒險》。作者在後記也分享了自己在遊戲開發上的經歷和挑戰。
Thumbnail
這篇文章介紹了使用UE4製作遊戲的練習和免費資源,包括素材連結和對話系統外掛。同時也提到了Unreal遊戲引擎的每月限免素材和線上學習資源,以及Epic Game Store遊戲平臺的優惠和缺點。
Thumbnail
這篇文章介紹了使用UE4製作遊戲的練習和免費資源,包括素材連結和對話系統外掛。同時也提到了Unreal遊戲引擎的每月限免素材和線上學習資源,以及Epic Game Store遊戲平臺的優惠和缺點。
Thumbnail
覺得是需要來記錄一下,輸出才是好的整理學習的方式! 也能檢視一下整個過程! 這是個透過各式主題,讓大家,尤其是很少接觸的人,知道桌遊原來有這麼多面向,引起更多人的興趣! 老早就討論好了很多桌遊主題,但這次還是有了基本的遊戲問題,以前都是曝光度的問題XD。 那到底是怎樣的問題,差點讓活動變得2
Thumbnail
覺得是需要來記錄一下,輸出才是好的整理學習的方式! 也能檢視一下整個過程! 這是個透過各式主題,讓大家,尤其是很少接觸的人,知道桌遊原來有這麼多面向,引起更多人的興趣! 老早就討論好了很多桌遊主題,但這次還是有了基本的遊戲問題,以前都是曝光度的問題XD。 那到底是怎樣的問題,差點讓活動變得2
Thumbnail
學完基礎的Lua語法後,今天開始製作第一個遊戲畫面了!
Thumbnail
學完基礎的Lua語法後,今天開始製作第一個遊戲畫面了!
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣
Thumbnail
剩下兩週上課囉,大家加油!! 在一開始我們在課程完成了椅子(角色的移動嘛),但遠遠的看著他移動好像缺少了一些遊戲體驗 嗎?>< 這週我們就來改變遊戲的視角吧~~ 來看一下兩個版本的比較~~ 原本WASD AD控制Y軸旋轉(轉頭),後來改成WASD控制平移座標,把旋轉特別移出來到滑鼠上,
Thumbnail
剩下兩週上課囉,大家加油!! 在一開始我們在課程完成了椅子(角色的移動嘛),但遠遠的看著他移動好像缺少了一些遊戲體驗 嗎?>< 這週我們就來改變遊戲的視角吧~~ 來看一下兩個版本的比較~~ 原本WASD AD控制Y軸旋轉(轉頭),後來改成WASD控制平移座標,把旋轉特別移出來到滑鼠上,
Thumbnail
本文探討了將遊戲視為文本研究對學生的影響,並討論了遊戲的獨特敘事方法,包括新興敘事、環境敘事、互動敘事和機制整合敘事。關鍵詞:電子遊戲、文本、語言藝術、ELA、教室
Thumbnail
本文探討了將遊戲視為文本研究對學生的影響,並討論了遊戲的獨特敘事方法,包括新興敘事、環境敘事、互動敘事和機制整合敘事。關鍵詞:電子遊戲、文本、語言藝術、ELA、教室
Thumbnail
這篇文章分享筆者在 2019 年時協助趨勢科技運用遊戲化(Gamification)推動 DevOps 企業文化轉型活動的過程。 你正嘗試應用遊戲化方法嗎?筆者整理了自己的實務經驗,設計了一個「遊戲化設計畫布」工具,用來幫助自己在未來的遊戲化專案中找出設計時的盲點。歡迎來看看如何運用!
Thumbnail
這篇文章分享筆者在 2019 年時協助趨勢科技運用遊戲化(Gamification)推動 DevOps 企業文化轉型活動的過程。 你正嘗試應用遊戲化方法嗎?筆者整理了自己的實務經驗,設計了一個「遊戲化設計畫布」工具,用來幫助自己在未來的遊戲化專案中找出設計時的盲點。歡迎來看看如何運用!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News