升降機的具體實現不像梯子,梯子只作為一個被玩家檢測的對象,加上自身幾乎沒有任何行動,主要的移動和檢測代碼都依賴在角色控制器上。而升降機與玩家的關係不同,升降機本身一方面需要被玩家檢測,並進行啟動升降機的倒計時,因此,檢測的代碼在於角色控制器中;另一方面,升降機的移動以及「載著」玩家行動的代碼又在於升降機本身。
所以,實現升降機需要分別在角色控制器(檢測與觸發)以及升降機控制器(移動)方面著手。
1. 角色控制器(檢測與觸發)
- 角色向下發射一道射線,檢測電梯的LayerMask
- 如果能檢測到電梯
- 先拿到電梯控制器的引用
- 判斷電梯當前是否已經在移動過程中
- 如果不是,則開始倒計時,計算角色站在這個靜止的電梯上的時間。當時間到了,就通過剛才得到的電梯控制器引用來啟動電梯,並將角色自身的位置信息傳遞過去,讓「電梯控制角色的y軸值移動」。
- 啟動電梯後,重置倒計時,消除角色重力
- 如果檢測不到,恢復重力為默認值,同時重置倒計時
- 代碼:
Pingback: [C#/Unity] 《Endless End》中的梯子實現總結 - LoneliNerd's Study Log