XNA - Avatar 我的虛擬人偶
XNA3.1以後的版本可以支援使用我的虛擬人偶,4.0甚至可以用在WP7內
這裡先講講XBOX360怎麼用
首先在專案裡增加三個物件
AvatarDescription 表示人偶的資訊,就類似一個存放3D模型的物件一樣!
AvatarRenderer 用來畫出人偶。
AvatarAnimation 決定人偶的動作動畫!
在一開始我們必須將GamerServicesComponent加入我們的程式裡,
1: Components.Add(new GamerServicesComponent(this));
接著隨機產生一個虛擬人偶,並將動作設定為生氣!
1: avatarDesc = AvatarDescription.CreateRandom(AvatarBodyType.Female);
2: avatarRenderer = new AvatarRenderer(avatarDesc, true);
3: avatarAnimation = new AvatarAnimation(AvatarAnimationPreset.MaleAngry);
這裡是設定他的位置
1: avatarRenderer.World =
2: Matrix.CreateRotationY(MathHelper.ToRadians(180.0f));
3: avatarRenderer.Projection =
4: Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),
5: GraphicsDevice.Viewport.AspectRatio, .01f, 200.0f);
6: avatarRenderer.View =
7: Matrix.CreateLookAt(new Vector3(0, 1, 3), new Vector3(0, 1, 0),
8: Vector3.Up);
在Update函式裡更新他的動作
1: avatarAnimation.Update(gameTime.ElapsedGameTime, true);
在Draw函式裡畫出來,
1: avatarRenderer.Draw(avatarAnimation.BoneTransforms, avatarAnimation.Expression);
虛擬人偶的畫法直接呼叫AvatarRenderer 的Draw函式就可以,不用像畫一般的模型這麼麻煩。
如此畫面上就會出現隨機裝扮的人偶拉!
等等,你一定會說幹嘛要隨機的人偶,我要自己帳號產生好的阿!那可是我精心打扮過的ㄝ!
你的心聲,我們都聽到了(超白痴的廣告詞!)
我們只要將取得人偶資訊的方式改變一下就好
1: //avatarDesc = AvatarDescription.CreateRandom();
2: //將上面改成下面
3: avatarDesc = Gamer.SignedInGamers[PlayerIndex.One].Avatar;
就可以取得我們自己的人物了!
但是要注意,第一次Update執行後才會經由GamerServicesComponent取得登入資訊,所以要檢查Gamer.SignedInGamers是否有資料,才能做取得Avatar的動作!