设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1436|回复: 8
打印 上一主题 下一主题

[已经解决] real_xy的问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

跳转到指定楼层
1
发表于 2012-10-22 21:36:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么real_x是x*128然后到screen x的时候再除以4?
为什么不直接让real_x= x*32?
这样写有什么作用?可以去掉吗?

Lv1.梦旅人

梦石
0
星屑
66
在线时间
91 小时
注册时间
2012-8-15
帖子
57
2
发表于 2012-10-23 19:06:13 | 只看该作者
就是精确点的,按一下,马上放掉是移动半格好象,在Game_Character 2 动画更新里有个计算real_x的方法。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
3
发表于 2012-10-23 20:44:31 | 只看该作者
本帖最后由 沙漠点灰 于 2012-10-23 20:59 编辑

应该是仅仅照顾事件走动速度而这样的..
事件每帧移动 2^速度,在计算时,再除以4,
若是lz那样*32,就得这样改:
事件每帧移动 2^(速度-2)
这样可能出现小数,如果我是默认脚本编写者的话,我是不想出现小数的...
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

4
 楼主| 发表于 2012-10-23 22:41:34 | 只看该作者
沙漠点灰 发表于 2012-10-23 20:44
应该是仅仅照顾事件走动速度而这样的..
事件每帧移动 2^速度,在计算时,再除以4,
若是lz那样*32,就得这样改 ...

怎么会出现小数呢。。。这是在整数范围内的运算啊。
那我把移动的速度改成与32协调不就行了?
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
5
发表于 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,两种都行....
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

6
 楼主| 发表于 2012-10-24 21:37:00 | 只看该作者
沙漠点灰 发表于 2012-10-24 13:00
比如移动速度为1,
那么每帧应该移动
2^(1-2) = 0.5像素,这不是小数...??

我把real_x增减的脚本改得使它一直是整数不就行了麽?
比如 real_x += 2**@speed
这就是整数啊
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
7
发表于 2012-10-24 22:25:01 | 只看该作者
piaoy 发表于 2012-10-24 21:37
我把real_x增减的脚本改得使它一直是整数不就行了麽?
比如 real_x += 2**@speed
这就是整数啊 ...

给您跪下了..........{:2_264:}

你这样不是就直接把速度乘以4了吗...........
速度为1时,每帧移动0.5像素
为了保证是整数,应该乘以64
不过万一不小心速度设置到0了,为保证整数,就乘以128了,这种解释您满意吗?


王芳,你怎么看?
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1140
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

8
 楼主| 发表于 2012-10-25 21:38:39 | 只看该作者
沙漠点灰 发表于 2012-10-24 22:25
给您跪下了..........

你这样不是就直接把速度乘以4了吗...........

还是没懂你的意思,我是说一格是32px的话,那计算screen坐标也就不用再除以4了,速度是1的时候怎么会是0.5呢?(0.5是不是(2**1)/4得来的?)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
9
发表于 2012-10-25 23:09:20 | 只看该作者
piaoy 发表于 2012-10-25 21:38
还是没懂你的意思,我是说一格是32px的话,那计算screen坐标也就不用再除以4了,速度是1的时候怎么会是0. ...

速度是规定的:
速度为1,每2帧移动1像素,一秒就能移动约0.7格,不信你数数,看看速度为1时1秒是0.7格,还是3格。
速度为2,每帧移动1像素,一秒就能移动约1格半
.............................
(0.5是不是(2**1)/4得来的?)
答案是对的,不过前提是浮点值.不然你试试,(2**1)/4=0
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-2 17:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表