我正在开发一个wp7游戏,玩家在程序中画线,球会从线上反弹。我正在使用XNA和farseer物理引擎。用户画一条线,然后程序将其转化为物理对象或至少是一个vector2列表的最佳方法是什么?我已经尝试创建TouchLocations列表,但如果用户不画得很慢,就会出现问题,就像我附加的图片一样。有什么建议吗?
谢谢
http://img829.imageshack.us/img829/3985/capturehbn.png
这是一些代码:
我正在使用gamestatemanagement示例,并且这是HandleInput方法中的代码。
路径管理器类(pathManager class) 管理一组路径类(path classes),这些路径类是可绘制的物理对象。这里是pathManager.Update。
这是我现在正在做的事情,我愿意为任何事情放弃它。你可能认为每个触摸位置都有一个5x5的矩形会影响性能,但使用farseer,即使屏幕大部分被占用,我也没有看到任何下降。然而,如果线条绘制得很快,这个系统根本不会创建平滑的线条。
我怀疑这对任何人都没有帮助,但这是Path构造函数。
foreach (TouchLocation t in input.TouchState) {
pathManager.Update(gameTime, t.Position);
}
路径管理器类(pathManager class) 管理一组路径类(path classes),这些路径类是可绘制的物理对象。这里是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;
}