Unity遊戲開發 跳躍 地面檢測及碰到的問題

2021-10-04 10:19:34 字數 1871 閱讀 7804

關鍵變數:

private

bool isonground;

//是否在地面

public

layermask groundlayer;

//地面層級

public

float groundcheckradius;

//用於檢測是否發生重疊的圓的半徑

public

float raylength;

//射線的長度

public

transform groundcheckpositon;

//檢測點資訊

判斷是否在地面:

方法一:區域重疊判斷方式,返回值為collider2d型別,可用bool作簡單接收,以下只用圓形和方形作示例,還有許多其他形狀。

//圓形區域

physics2d.

overlapcircle

(groundcheckpositon.position,groundcheckradius, groundlayer)

;//方形區域,第二個引數為vector2型別,第三個引數為旋轉角度,在大多數場景下方形區域更加適用

physics2d.

overlapbox

(groundcheckpositon.position,groundchecksquare,

0, groundlayer)

;

方法二:射線檢測判斷方式,返回值為raycasthit2d型別,raycasthit2d的point屬性輸出的是檢測到的第乙個碰撞點位置,可用bool作簡單接收

physics2d.

raycast

(groundcheckpositon.position,

-transform.up, raylength,groundlayer)

;

視覺化檢測區域:

為方便檢測區域的視覺化可使用以下方法進行視覺化,方便檢查及調整。

方法一:對應於區域重疊判斷方式,該繪製**需要在該放方法中宣告,也擁有多種形狀,以下示例為正方體,第二各引數為vector3型別,本次傳入的是vector2型別繪製了乙個方形。繪製wirecube等wire型別的形狀只會描繪邊界,不會填充各個面,便於檢查及調整。

private

void

ondrawgizmos()

方法二:對應於射線檢測判斷方式(也可採用gizmos繪製)。

1.繪製線,第乙個和第二個引數為vector3型別引數代表起始點與終點,第三個是繪製線的顏色,繪製的終點可以起點加上射線方向的射線長度,用於檢視設定的射線情況。或者使用射線返回值raycasthit2d中的point屬性,顯示射線實際發射的狀態。

debug.

drawline

(startpoint,endpoint,color)

;

2.繪製射線,第乙個引數,第二個引數均為vector3型別,分別代表射線的長度與方向向量(方向與長度),因此前兩個引數可以與,第三個引數為顏色。

debug.

drawray

(startpoint,direction*length,color)

;

在跳躍中可能遇到的問題,也是我在執行過程中遇到的,雖然很簡單的問題,但是確實也煩了好一會,希望新開發者看到後可以避免。

Unity遊戲開發 Unity物理引擎

詳細講解unity的物理引擎系統以及物理元件的應用及注意事項。學習剛體rigidbody和碰撞體collider元件的工作方式和應用場景。我們設計了非常高效的教學路徑,讓你快速入門unity物理元件的設定方式及操作流程。同時我們也對所有物理元件進行了非常詳細的講解及實操演示。帶你全面深度了解rigi...

Unity遊戲開發背景知識

一 unity 1.支援的ide 整合開發環境 monodevelop 適用於windows mac linux,主要用於mac visual studio 適用於microsoft支援的所有平台 二 visual studio基本使用 1.vs使用基本要求 1.新建和儲存專案 2.了解vs介面,學...

C 開發Unity遊戲教程之Unity中方法的引數

出現在指令碼中的方法,無論是在定義的時候,還是使用的時候,後面都跟著一對括號 有意義嗎?看起來最多也就是起個快速識別方法的作用吧。既然c 的語法規定方法就應該這麼寫,肯定是有一定道理的。如果是上公升到戰略意義的道理,連作者也不是很明白,但是作者知道這對括號裡可以新增 引數 要說明引數的作用,就必須從...