[英]Accelerometer with acceleration - move image Windows Phone 8
在C#中為Windows Phone 8開發一個非常簡單的學習游戲,我創建了一個加速向量,如下所示:
Vector3 acceleration = accelerometerReading.Acceleration;
我不能做任何事情:
mycontrol.Xacceleration = mycontrol.Xacceleration + acceleration.X * 200;
如何將加速度應用於圖像,找不到坐標或加速度屬性。 我正在嘗試移動圖像,就像在迷宮游戲中一樣,如何通過加速實現此目的? 我該如何申請?
感謝幫助!
如果要制作帶有移動對象的游戲,則應考慮使用XNA或Unity之類的游戲引擎,因為C#/ XAML的性能不好。
如果您真的想使用C#/ xaml,則需要自己計算圖像控件的位置。 要設置位置,您可以將圖像放置在“畫布”中並按如下所示設置位置:
Canvas.SetTop(myControl,XPosition);
Canvas.SetLeft(myControl,YPosition);
您還可以使用StoryBoard為對象設置動畫,但如果加速度和方向不斷變化,則可能會更復雜
要利用硬件加速,您將需要在移動對象上設置CacheMode =“ BitmapCache”。
這是一些計算對象位置的代碼:
public class ObjectInfo
{
public Vector2 Position { get; set; }
public Vector2 Speed { get; set; }
public Vector2 Acceleration { get; set; }
}
private DispatcherTimer dispatcherTimer;
private int refreshTimeMilisecond = 100;
private ObjectInfo myObject;
public void Init()
{
myObject = new ObjectInfo();
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromMilliseconds(refreshTimeMilisecond);
dispatcherTimer.Tick += dispatcherTimer_Tick;
}
void dispatcherTimer_Tick(object sender, EventArgs e)
{
myObject.Position = myObject.Position + myObject.Speed*refreshTimeMilisecond;
myObject.Speed = myObject.Speed + myObject.Acceleration * refreshTimeMilisecond;
Canvas.SetTop(myControl, myObject.Position.X);
Canvas.SetLeft(myControl, myObject.Position.Y);
}
在xaml中:
<Canvas>
<Image x:Name="myControl" CacheMode="BitmapCache" Source="SmyleyImagePath"/>
</Canvas>
您將需要使用refreshTimeMilisecond參數來找出最有效的方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.