| 赞 | 1 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2015-1-15 |
| 在线时间 | 323 小时 |
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 323 小时
- 注册时间
- 2010-8-21
- 回帖
- 638
|
发表于 2012-10-24 13:00:07
|
显示全部楼层
piaoy 发表于 2012-10-23 22:41 
怎么会出现小数呢。。。这是在整数范围内的运算啊。
那我把移动的速度改成与32协调不就行了? ...
比如移动速度为1,
那么每帧应该移动
2^(1-2) = 0.5像素,这不是小数...??
若是最后除以4,那么就每帧移动2^1,即2个单位,每4个单位为1像素...
比如
def screen_x
# 通过实际坐标和地图的显示位置来求得画面坐标
return (@real_x - $game_map.display_x + 3) / 4 + 16
end
中
@real_x = 1280,若为lz那样则为320
$game_map.display_x = 1282(在运动中),若为lz那样则为320.5,
那么 screen_x = (2+3)/4 + 16 => 17
lz的:
screen_x = 0.5 + 16 => 16.5 => ceil => 17
反正我是倾向于上者.
因为仅仅算是Ruby的"优点",数据类型可以随时改变.
若是其他语言,作为2D游戏,坐标我肯定设为短整型的,
那么
x = 2^(1-2) => 0,
也就是说,速度低于而2的事件是不会移动的,不过,这里是ruby,两种都行.... |
|