社区
游戏开发
帖子详情
如何控制精灵移动的速度
newlju
2004-08-01 10:28:08
比如一些游戏(2d)场景中一些精灵吃了物定的物品后移动速度加快。并且不出现跳跃感。
...全文
341
13
打赏
收藏
如何控制精灵移动的速度
比如一些游戏(2d)场景中一些精灵吃了物定的物品后移动速度加快。并且不出现跳跃感。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Researcher
2004-09-27
打赏
举报
回复
(不限制帧数)新位置 = 老位置 + 移动方向×移动速度×帧时间
这种方法虽然可以恒速,但也有问题,那就是如果帧时间太长会出现碰撞检测失败之类的问题,因为精灵运动跨度太大.我还是不太赞成.
廖雪峰
2004-09-27
打赏
举报
回复
使用timer来触发帧事件是不行的,你看看游戏编程精髓有篇文章讲了如何写游戏中的clock
寻开心
2004-09-27
打赏
举报
回复
是这样的,完整的计算方案是
len = 移动速度×帧时间
if ( len > MAX_LIMIT ) len = MAX_LIMIT
新位置 = 老位置 + 移动方向×LEN;
移动跨度大的可能只发生在帧时间超常的情况下,这种情况在系统当中是很少出现的
当你完成一个程序的时候,客户的计算机配置使得运行速度往往差异几倍甚至几十倍
这就导致,你在自己电脑上调制的固定距离移动方法在不同电脑上差异非常的大
而速度×帧时间的方法,是保障在不同配置的电脑上运行速度一致的方法
固定帧率的办法在2d游戏当中比较常用,因为可以保障大多数电脑都满足2d游戏的配置需求
在3d环境当中差异就会很大,保证帧率是很难做到的一件事情,而且限制了高性能电脑的平滑效果了
lhy
2004-09-26
打赏
举报
回复
只要帧数高就没关系
wy99sinacom
2004-09-26
打赏
举报
回复
上面写错了
应该采取第2种方式,第一中方式不易扩展,
第二种方式只要把帧时间设为固定量就可以在不用修改程序的基础上变成第一中方式
wy99sinacom
2004-09-26
打赏
举报
回复
应该采取第2种方式,第一中方式不易扩展,
第一种方式只要把帧时间设为固定量就可以在不用修改程序的基础上变成第一中方式
kofightas
2004-08-05
打赏
举报
回复
补充一下,关于两种方法
(限制帧数)新位置 = 老位置 + 移动方向 × 固定量 (1)
(不限制帧数)新位置 = 老位置 + 移动方向×移动速度×帧时间 (2)
在机器速度足够的时候都能正常工作,而在机器效能不足的情况下,(1)的游戏速度会变慢,(2)的游戏速度不变,但出现大量丢帧.
kofightas
2004-08-05
打赏
举报
回复
只要固定帧数到30以上,移动较快也不会有跳跃感
新位置 = 老位置 + 移动方向 × 固定量
的方法在一般2D游戏中是适用的。如果你的移动速度非常之快确实有跳跃感,可以尝试把游戏的最高帧数固定在60,fps=60的时候就不可能有跳跃感了。happy__888([顾问团]寻开心)和mgphuang(tony)的方法是不使用固定帧数时用的.现在看来2D游戏使帧数固定效果好些。
新位置 = 老位置 + 移动方向×移动速度×帧时间
这个用在3D游戏中,因为3D游戏一般不是帧驱动而是时间驱动的.
DarthVader
2004-08-03
打赏
举报
回复
hehe happy__888([顾问团]寻开心) 提到的办法在Windows游戏编程大师里面就有讲解 的确如此 用了第一个公式之后 不管机器 相同时间间隔中 相同的速度总能运动相同的距离 而如果用第二个公式每帧改变位置的话 fps一变 物体的运动频率也变了
寻开心
2004-08-03
打赏
举报
回复
老问题了
给精灵定义一个移动方向和移动速度
每次都使用
新位置 = 老位置 + 移动方向×移动速度×帧时间
这个公式来计算新位置,然后在新位置绘制精灵
而不要采取
新位置 = 老位置 + 移动方向 × 固定量
这种方式
通过速度和帧速度来控制运动距离可以有效避免系统配置的问题和跳跃的问题。
mgphuang
2004-08-02
打赏
举报
回复
补充一下,在提高精灵的每帧间隔后,这里的动画的帧数应该密集一些,这样才会比较平滑.
DarthVader
2004-08-01
打赏
举报
回复
精灵类应该有速度成员变量的 吃了奖励之后提高速度值就可以了 关键是你说的平滑 如果按上面的思路 每帧改变物体位置 速度大幅度提高之后 必然会有一定的跳跃现象
看一下另一种思路:你可以设置一个计数器 用来控制物体的运动 每次当这个计数器增加到一定门限值 比如说是8 才让物体按照速度移动一下 要提高物体的运动速度 只要把门限值改小 比如4 那么物体每当计数器增加到4的时候就会移动 你可以试试效果
mgphuang
2004-08-01
打赏
举报
回复
精灵动图的时间间隔:StepCount
精灵上一帧动画开始时间:OldTimeTick
在每一次游戏主循环里检测
if (GetTimeTick()-OldTimeTic > StepCount)
{
//下一帧啊.
}
如果吃了东西,则把StepCount的值变小就可以了.
python动画
精灵
move_更改
精灵
动画
速度
(pygame)
我希望有一个简单的方法来改变它,使
精灵
的动画
速度
比游戏的FPS慢。在这是我的
精灵
类代码:class Civilian(pg.sprite.Sprite):def __init__(self, game, x, y):self.groups = game.all_sprite...
cocos creator编写简易游戏摇杆以及通过摇杆
控制
精灵
移动
首先简单制作游戏遥杆2个圆形图片素材,以及
精灵
素材 摇杆背景 摇杆
精灵
素材 节点管理 将素材放入编辑器中,使用一个命名为Rocker的空节点作为父节点放入两个圆形素材,调色。作为摇杆的大圆命名为rock_...
python
控制
机器
移动
速度
_python
控制
机器
移动
速度
_基于Python和tile的游戏:限制玩家
移动
速度
...
为了限制
移动
速度
,我使用了一个全局变量:TILE_To_TILE_DELAY=200。在TILE_TO_TILE_DELAY应该是玩家从一个TILE
移动
到另一个TILE所需的时间(毫秒)。在这段时间里,他们不应该有新的运动。在我一直使用的系统是我有一...
按键
精灵
平滑
移动
//这里展示了鼠标 历时5秒 从屏幕左上角
移动
到屏幕右上角的例子,下面是参数说明 //参数:平滑灵敏度说明:整形,范围1~其实坐标差最大值,鼠标单次跨越的距离。 //
移动
总时间越长或起始坐标距离越短,平滑灵敏度越...
控制
精灵
以相同的
速度
在不同设备上
移动
当设计一个动画时,由于不同运行设备性能之间有可能存在很大的差异,比如一个老式奔腾机器和酷睿的新机器的运算性能天壤之别,所以为了保证,
精灵
的
移动
在任何机器上都保持一样的显示效果,我们需要恒定的
速度
。...
游戏开发
8,303
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章