XNA - Avatar 我的虛擬人偶

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函式就可以,不用像畫一般的模型這麼麻煩。
如此畫面上就會出現隨機裝扮的人偶拉!

pic1

等等,你一定會說幹嘛要隨機的人偶,我要自己帳號產生好的阿!那可是我精心打扮過的ㄝ!
你的心聲,我們都聽到了(超白痴的廣告詞!)
我們只要將取得人偶資訊的方式改變一下就好

   1: //avatarDesc = AvatarDescription.CreateRandom();
   2: //將上面改成下面
   3: avatarDesc = Gamer.SignedInGamers[PlayerIndex.One].Avatar;

就可以取得我們自己的人物了!

pic2

但是要注意,第一次Update執行後才會經由GamerServicesComponent取得登入資訊,所以要檢查Gamer.SignedInGamers是否有資料,才能做取得Avatar的動作!