Tworzenie animacji wielu obiektów.

0

Witam was,

Mam pewien problem z tworzeniem animacji, może najpierw naświetlę jego tło.

Tworzę grę, Tower Defence jeśli komuś pomoże to sobie wyobrazić. Aplikacja dynamicznie tworzy mapę przez ItemControl, dane pobiera z DataContext:

<DataTemplate x:Key="itemsTemplate">
            <Border BorderBrush="Black" BorderThickness="1">
            <Grid Width="32" Height="32">
                <Grid.Background>
                    <SolidColorBrush Color="{Binding Color}"/>
                </Grid.Background>

                </Grid>
            </Border>
</DataTemplate>

......

<ItemsControl
                    ItemsSource="{Binding ElementName=Main, Path=DataContext.Map.FieldList}"
                    ItemTemplate="{StaticResource itemsTemplate}" >
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Toolkits:WrapPanel Width="{Binding MapSize}" Height="{Binding MapSize}" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
</ItemsControl>

Wygląd mapy: http://img853.imageshack.us/img853/5825/mapadd.png

Pola przez które będą szły jednostki są oznaczone innym kolorem.

Teraz chciałbym zaprogramować 'poruszające się' obrazki jednostek przez poszczególne pola mapy.

I tutaj zaczyna się mój problem - jak dowiedzieć się położenia poszczególnego pola przez które mają się poruszać jednostki, kiedy elementy FieldList posiadają tylko wiedzę o swojej kolumnie i wierszu. I jak to potem zaprogramować nie łamiąc wzorca MVVM.

Będę wdzięczny za każdą poradę, nawet jeśli będę musiał zmieniać dotychczasowy kod.

0

Trochę czasu minęło ale odpiszę jak to widzę.
Jeżeli model wygenerował ścieżkę, to posiada informacje jak ona przebiega (które pola są następne podążając od punktu A do B).
Wiedząc to możesz eksponować w viewmodel obiekt typu (x,y,kierunek). Do niego podepniesz się w view odpowiednio umiejscowioną reprezentacją jednostki z odpowiednią rotacją wg kierunek. Można to by było zrobić na x,y w postaciach całkowitych i restartowaną animacja, albo płynnie zmieniającymi się x i y.

Tak czy inaczej do pisania gier polecam użycie engine'u, który będzie bardziej wydajny i da większe możliwości. Myślę że zainteresuje Cię Unity (http://unity3d.com/).
Można skryptować w C# i jest wersja darmowa.

0

Stary, nie wierze, że odpisałeś mi na posta praktycznie sprzed roku. Ale spoko, odpowiedź niech będzie dla potomnych.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.