最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity 做FPS 需要的知識點 筆記一

2022-11-05 22:42 作者:東邊的BiLi  | 我要投稿

文件頭我們設置各種變量 給后面用

private CharacterController playercc ---- 這里只介紹使用CharacterController 即非物理系統(tǒng)的辦法? 我們把它叫做 playercc

init 初始化階段我們做下面的工作

playercc = GetComponent<CharacterController>();? 獲取本體的 CharacterController 組件 后面會操作它

cam = GetComponentInChildren<Camera>();? ?新知識 獲得 子對象的組件

Cursor.lockState = CursorLockMode.Locked;? ?將鼠標鎖在屏幕中心? 因為我們靠它來轉(zhuǎn)向 以及 瞄準

非物理系統(tǒng)移動、靜止? 這是每一幀都要做的事情 即 update 過程

if? playercc.isGrounded? ?可以判斷是否站在地上

moveDirection.y -= gravity * Time.deltaTime;? 配合上面做判斷? 如果不是站著 就模擬重力 生成一個 Y 軸的向量

gravity 是你自己設置的變量? 設成20好像就可以了

h = transform.right * Input.GetAxis("Horizontal")

v = transform.forward * Input.GetAxis("Vertical")? ?獲取你的輸入 分別是 前后的向量? 以及 左右的向量,? 他們的量從 0 到 1? 所以在后面 你還得乘上 movespeed

moveDirection = h + v? 向量合并成最終方向

if (Input.GetButton("Jump")? moveDirection.y = jumpSpeed;? ? 我認為可以跟上面判斷是否站在地面一起做了? 因為都是給Y軸賦值

if? Cursor.lockState == CursorLockMode.Locked? ? ? ? ?

Lookvertical = -Input.GetAxis("Mouse Y");

Lookhorizontal = Input.GetAxis("Mouse X"); 如果是瞄準模式 那么就獲取鼠標偏移量

rotationX += Lookvertical * lookSpeed; 計算鏡頭上下旋轉(zhuǎn)? 即你的頭

rotationX = Mathf.Clamp(rotationX, look_down_angle_limit, look_up_angle_limit, )? 限制你的脖子 它無法做360度的旋轉(zhuǎn)


Camera.transform.localRotation = Quaternion.Euler(rotationX, 0, 0);

transform.rotation *= Quaternion.Euler(0, Lookhorizontal * lookSpeed, 0);? 介紹說 應該使用Quaternion這個四元數(shù)組 但它又轉(zhuǎn)換為euler這個三元數(shù)組 我覺得應該可以簡化掉

playercc.Move(moveDirection * Time.deltaTime);? 根據(jù)你的FPS來運動


游戲暫停的實現(xiàn)? 包括暫停動畫 將角色固定住 鼠標控制 及 最關(guān)鍵的 時間停止 等等

if (Input.GetKeyDown(BackKey))

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (MenuPanel.activeInHierarchy)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? MenuPanel.SetActive(false);

? ? ? ? ? ? ? ? ? ? Player.canMove = true;

? ? ? ? ? ? ? ? ? ? Cursor.visible = false;

? ? ? ? ? ? ? ? ? ? Cursor.lockState = CursorLockMode.Locked;? ?---鎖定鼠標 成為瞄準模式

? ? ? ? ? ? ? ? ? ? Time.timeScale = 1.0f;? ? ? ? ? ? ? ----時間正常流逝

? ? ? ? ? ? ? ? ? ? ani.SetBool("START", false);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? MenuPanel.SetActive(true);

? ? ? ? ? ? ? ? ? ? Player.canMove = false;

? ? ? ? ? ? ? ? ? ? Cursor.visible = true;

? ? ? ? ? ? ? ? ? ? Cursor.lockState = CursorLockMode.None;? ? --- 不鎖定鼠標 讓你用鼠標做各種操作

? ? ? ? ? ? ? ? ? ? Time.timeScale = 0.0f;? ----暫停的關(guān)鍵

? ? ? ? ? ? ? ? ? ? ani.SetBool("START", true);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }



那么 FPS 游戲的最基礎部分 已經(jīng)學完了,現(xiàn)在可以自己搭場景,能跑能跳。以后繼續(xù)學習射擊,降會包含射線檢測、敵人AI索敵 等等很多新知識。 好 先這樣了。

Unity 做FPS 需要的知識點 筆記一的評論 (共 條)

分享到微博請遵守國家法律
柘城县| 包头市| 大田县| 高平市| 介休市| 昌平区| 专栏| 晋宁县| 梓潼县| 蓝山县| 兴山县| 万载县| 南汇区| 兰坪| 江口县| 周口市| 油尖旺区| 石屏县| 象州县| 兰考县| 定州市| 南充市| 张家港市| 台南县| 泸溪县| 柳河县| 安顺市| 彭阳县| 平度市| 澎湖县| 淄博市| 巴东县| 新竹县| 南昌县| 贵南县| 呼玛县| 上林县| 天祝| 常熟市| 仁怀市| 太保市|