我正在使用cocos2d v3开发基于地图的游戏。
我有一张大小为2 ^ 19点的地图。在那张地图上,我有一个物体应该在短距离内移动。大约60-70分。
CGPoint offset = [_trajectoryPath offsetForNextPosition];
CGFloat x = self.position.x + offset.x;
CGFloat y = self.position.y + offset.y;
self.position = CGPointMake(x, y);
在这样的地图大小地图位置可以是{300000,40000}点。 当我尝试添加小步骤时,让我们说{0.002f,0.004f},为动画对象位置我最终仍然使用相同的{300000,40000}点......
据我所知,这是因为漂浮的精确度。按地图大小标准化的值介于0和1.0之间,也不起作用。
是否有可能以某种方式提高iOS上浮点类型的精度?或者可能是某个人提出了关于此问题的可能解决方法的提示?
感谢。
答案 0 :(得分:0)
mightee.cactus,我记得我们有一个类似的问题,同时在非常大的数字中添加非常小的数字,浮点数为c。
解决方案如下:我们将类型更改为加倍以保持准确性;在你的情况下,你可以使用双精度进行所有算术运算,并在CGPointMake中使用之前将它们转换为CGFloat。