簡體   English   中英

帶有加速度的加速度計-移動圖像Windows Phone 8

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM