Я разрабатываю игру wp7, в которой игрок рисует линии в программе, а мяч отскакивает от них. Я использую XNA и физику farseer. Каков наилучший способ для пользователя нарисовать линию, а затем для программы взять ее и превратить в физический объект или, по крайней мере, в список vector2? Я пытался создать список TouchLocations, но он оказывается нечетким, если пользователь не рисует очень медленно, как на картинке, которую я приложил. Какие-либо предложения? Спасибо http://img829.imageshack.us/img829/3985/capturehbn.png
Вот некоторый код: я использую пример gamestatemanagement, и это в методе HandleInput
foreach (TouchLocation t in input.TouchState) {
pathManager.Update(gameTime, t.Position);
}
Класс pathManager управляет коллекцией классов путей, которые являются физическими объектами, которые можно рисовать. Вот pathManager.Update
public void Update(GameTime gameTime, Vector2 touchPosition) {
paths.Add(new Path(world,texture, new Vector2(5,5) ,0.1f));
paths[paths.Count-1].Position = touchPosition;
}
Это именно то, чем я сейчас занимаюсь, и я готов выбросить это за что угодно. Вы могли бы подумать, что наличие прямоугольника 5x5 для каждого места касания убьет производительность, но с помощью farseer я не видел никаких падений, даже при почти полном экране. Однако эта система вообще не создает плавной линии, если линия рисуется быстро.
Я сомневаюсь, что это кому-то поможет, но вот конструктор Path.
public Path(World world, Texture2D texture, Vector2 size, float mass) {
this.Size = size;
this.texture = texture;
body = BodyFactory.CreateRectangle(world, size.X * pixelToUnit, size.Y * pixelToUnit, 1);
body.BodyType = BodyType.Static;
body.Restitution = 1f;
body.Friction = 0;
body.Friction = 10;
}