Страница: 1 |
Вопрос: Бо( Проблемы с физикой в WPF
Добавлено: 27.06.10 17:36
Автор вопроса: VβÐUηìt | Web-сайт: смекаешь.рф
Подцепил к WPF-васе небезызвестный движок Farseer. Хороший, годный такой движок. И примеров море. Вот только одно но: для WPF все примеры написаны на XAML, на котором, в общем-то все до неприличия просто:
<Rectangle Fill="#FF9E9E9E" Stroke="Black" RadiusX="17" RadiusY="17" Width="676" Height="106" Canvas.Left="54" Canvas.Top="397">
<i:Interaction.Behaviors>
<pb:PhysicsObjectBehavior IsStatic="True "/>
</i:Interaction.Behaviors>
</Rectangle>
Вот эти три строчки
<i:Interaction.Behaviors>
<pb:PhysicsObjectBehavior IsStatic="True "/>
</i:Interaction.Behaviors>
заставляют подчиняться наш Rectangle физическим законам (сверху еще похожая вася а-ля превращение канваса в физический контроллер - тоже 3 строчки).
В общем, все хорошо. Но! Мне нужно создавать эти физические объекты динамически, а не статически. А код на C# я никак гад не хочет работать :( И C#-примеры с XNA смотрел, и пытался перевести с XAML на C# - не получается. На данный момент код выглядит так:
PhysicsLayer = new PhysicsController() { AutoAddCanvasObjects = true, MousePickEnabled = true, Margin = new Thickness(0), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch };
PhysicsCanvas = new Canvas() { Margin = new Thickness(0), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, IsHitTestVisible = true };
PhysicsControllerMain.SetPhysicsController(PhysicsCanvas, o);
var rec = new Rectangle() { Width = 100, Height = 100, Fill = Brushes.Gold, IsHitTestVisible = true };
PhysicsCanvas.Children.Add(rec);
PhysicsLayer.GravityHorizontal = 0;
PhysicsLayer.GravityVertical = 10;
Чую не хватает о-очень простой банальности/и или надо делать совсем по другому. Но как?
Заранее благодарен
Ответить
Номер ответа: 1Автор ответа: VβÐUηìt
Вопросов: 246Ответов: 3333
Web-сайт: смекаешь.рф Профиль | | #1
Добавлено: 27.06.10 18:45
Вопрос закрыт. Раста разобрался, и хорошо перевол XAML в C#. Тем, кто любит простые физические движки:
PhysicsCanvas = new Canvas() { Margin = new Thickness(0), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, IsHitTestVisible = false };
var rec = new Rectangle() { Margin = new Thickness(33, 33, 0, 0), HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Width = 50, Height = 50, Fill = Brushes.Gold, Visibility = Visibility.Visible };
Interaction.GetBehaviors(PhysicsCanvas).Add(new PhysicsControllerBehavior() { MousePickEnabled = true });
Interaction.GetBehaviors(rec).Add(new PhysicsObjectBehavior() { Mass = 1 });
Canvas.SetTop(rec, 33);
Canvas.SetLeft(rec, 33);
PhysicsCanvas.Children.Add(rec);
Смекнули?
Ответить
Страница: 1 |
Поиск по форуму