學習資源:B站 M_Studio《Unity教程2D入門》20-21
Unity Assets:Sunnyland
Day15
更正:Time.fixedDeltaTime
讓角色移動和跳躍時更加流暢,如果是用FixedUpdate函式,應該相對應選擇
Time.fixedDeltaTime,
1. 增加Crouch(下蹲)效果
為節省時間,這里就不添加這個實際效果,但理解一下其中的思路和方法,
在Input中沒有Crouch,如何添加?
右鍵,復制某一項,然后修改其中的引數即可,
下蹲時碰撞體不變,怎么辦?
觀察游戲運行時的碰撞體,發現即使角色下蹲,碰撞體仍然保持原來的樣子,也就是說角色下蹲后還是無法通過低處,
這里就是先前要用兩個碰撞體的原因,
當角色下蹲后,應該讓頭部的box collider消失,起立后再讓碰撞體出現,
注意
節點用setactive,組件用enabled,
disColl.enabled = false;
小技巧:如何在游戲運行時看見碰撞體?
點擊右上角的Gizmos,
就可以看見屬性面板中展開的部分,在Scene中的效果,
如圖,這里展開兩個碰撞體的組件,
問題:下蹲鉆到一半時站起,會被卡住,
思路:如果監測到上部有ground,就不能起立,
方法:選中靠近角色頭頂的一個點作為基準點,畫一個圈,判斷ground是否在這個圈內,
Physics2D.OverlapCircle(Vector2 point,float radius,int layerMask):
Checks if a collider falls within a circular area
point:基準點
radius:判斷范圍
layerMask:要判斷的圖層
在這里插入代碼片
小技巧:判斷角色頭頂的位置
給角色添加一個子節點celling,將它移至角色的頭頂,
代碼如下:
void Crouch(){
//當沒有障礙物時
if(!Physics2D.OverlapCircle(Celling.position,0.2f,ground))
{
if(Input.GetButton("Crouch"))
{
anim.SetBool("isCrouching",true);
disColl.enabled = false;
}
else
{
anim.SetBool("isCrouching",false);
disColl.enabled = true;
}
//控制角色下蹲
}
}
2. 角色掉落死亡
教程里面還使用了trigger碰撞體,但我覺得用y坐標來判斷即可,
當角色小于某一y坐標,觸發死亡,
我用了一個public變數來設定死亡邊界,
public float deadLiney = -7.0f;
游戲重置
using UnityEngine.SceneManagement;
重啟當前場景,
update中:
if(transform.position.y < deadLiney)
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
制作delay效果
延遲2s后啟動,
將上述代碼重新寫為一個函式,
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
update中:
停止播放音樂
if(transform.position.y < deadLiney)
{
//將所有的音頻都禁用
GetComponent<AudioSource>().enabled = false;
//延遲2s后重啟
Invoke("Restart", 2f);
}
3.切換場景
- 使用場景名
SceneManager.LoadScene(“name”) - 使用場景編號
SceneManager.GetActiveScene().buildIndex
添加腳本EnterHouse:
void Update()
{
if(Input.GetKeyDown(KeyCode.E))
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
}
場景編號是什么?
在build setting中場景名后面的就是場景編號,
可以通過拖動來修改順序,
將該腳本添加給Dialog,只有Dialog視窗啟動時,按e才會觸發場景切換,
(否則在游戲程序中如果誤觸了e就會觸發場景切換!)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295751.html
標籤:其他
上一篇:關于團隊、競賽、作業,一點感觸