Unity官方案例研究 第三人稱控制器

2021-07-29 08:47:12 字數 2647 閱讀 7049

因為在網上不容易找到解析官方案例的文章,最近也在研究第三人稱控制器,所以把我所知道的東西給大家分享一下.

主要的**就這兩個指令碼,我已經大量注釋過了,現在給大家貼出來.

thirdpersonusercontrol指令碼

using system;

using unityengine;

using unitystandardassets.crossplatforminput;

namespace unitystandardassets.characters.thirdperson

else

// 獲取第三人稱的移動指令碼,這個不能為空

m_character = getcomponent();

}private void update()

}// 固定幀數,用於物理的同步

private void fixedupdate()

else

#if !mobile_input

//走路速度減半

if (input.getkey(keycode.leftshift)) m_move *= 0.5f;

#endif

// 將所有的引數傳遞給移動類

m_character.move(m_move, crouch, m_jump);

m_jump = false;//跳躍是個衝力,只要傳一次就夠了 }}

}

thirdpersoncharacter指令碼

using unityengine;

namespace unitystandardassets.characters.thirdperson

// 這是在fixedupdate中呼叫的move方法

/// /// 移動方法

///

/// 移動的方向

/// 是否蹲伏

/// 是否跳躍

public void move(vector3 move, bool crouch, bool jump)

else

//縮小膠囊體,並判斷是否可以站立

scalecapsuleforcrouching(crouch);

//在只能下蹲的區域保持下蹲

preventstandinginlowheadroom();

// 將輸入和其他狀態傳遞給動畫元件

updateanimator(move);

} /// /// 縮小膠囊碰撞體

///

/// 是否蹲伏

void scalecapsuleforcrouching(bool crouch)

else

// 沒有碰到,回到初始的狀態

m_capsule.height = m_capsuleheight;

m_capsule.center = m_capsulecenter;

m_crouching = false;

}} /// /// 在只能下蹲的區域保持下蹲

///

void preventstandinginlowheadroom()

}} /// /// 用來更新動畫狀態機裡的值

///

/// 移動引數

void updateanimator(vector3 move)

// 計算哪只腳是在後面的,所以可以判斷跳躍動畫中哪只腳先離開地面

// 這裡的**依賴於特殊的跑步迴圈,假設某只腳會在未來的0到0.5秒內超越另乙隻腳

float runcycle = mathf.repeat(//獲取當前是在哪個腳,repeat相當於取模

m_animator.getcurrentanimatorstateinfo(0).normalizedtime + m_runcyclelegoffset, 1);

float jumpleg = (runcycle < k_half ? 1 : -1) * m_forwardamount;

if (m_isgrounded)

// 這邊的方法允許我們在inspector檢視中調整動畫的速率,他會因為根運動影響移動的速度

if (m_isgrounded && move.magnitude > 0)

else

}/// /// 空中的處理,注意,空中跳躍和下蹲時不起作用的

///

void handleairbornemovement()

/// /// 跳躍方法,檢測是否能跳

///

/// 是否蹲伏

/// 是否跳躍

void handlegroundedmovement(bool crouch, bool jump)

}/// /// 幫助角色快速轉向,這是動畫中根旋轉的附加項

///

/// /// 這個方法來覆蓋預設的根運動,這個方法允許我們移除位置的速度

///

public void onanimatormove()

}/// /// 檢測是否離開地面

///

void checkgroundstatus()

else}}}

Hololens第三人稱視角實現

其實hololens的第三人稱視角識別很簡單,本質上只要能夠將兩個座標點對齊就行,但是這個兩個不同的應用沒辦法使用同乙個座標系。所以採用ar識別功能達到兩個座標係對其的目的。第乙個就是hololens端使用vuforia進行識別,但是有一點識別圖的物理尺寸要和識別圖大小保持一致,不然深度不對產生的誤...

Unreal 建立第三人稱遊戲模式

我這裡選擇的是vr basic,建立完level可以看到目前該地圖是第一人稱視角,現在要把它改成第三人稱視角 mygamemode 建立系統預設的gamemode類就行 myplayercontroller 建立系統預設的playercontroller類就行 mypawn 這是乙個characte...

unity3d 系統第三人稱預設有問題

我們在匯入系統自帶的charactercontroller包,裡面是有第一人稱和第三人稱的預設,我在將3rd person controller拖拽到hierarchy中的時候,每當切換第一人稱和第三人稱的時候,發現第三人稱的那個人物總是有乙個蹲起的動作,我一開始以為是人物的高度可能偏低,但怎麼調還...