因為在網上不容易找到解析官方案例的文章,最近也在研究第三人稱控制器,所以把我所知道的東西給大家分享一下.
主要的**就這兩個指令碼,我已經大量注釋過了,現在給大家貼出來.
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中的時候,每當切換第一人稱和第三人稱的時候,發現第三人稱的那個人物總是有乙個蹲起的動作,我一開始以為是人物的高度可能偏低,但怎麼調還...