游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1892|回复: 3

如何调整不同的对象具有不同的速度

[复制链接]

2

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2007-5-12 11:26:00 | 显示全部楼层 |阅读模式
不知道大家是怎样处理多个对象不同的移动速度的,是通过改变步幅大小还是改变走动频率? 我是这样设计的 :
每个移动对象具有一个内部变量T(保存上一帧的时钟),S(间隔数值,如200),当处理移动时,如果当前时钟-T>=S则位移一个步幅,同时保存时钟到内部变量T, 如果当前时钟-T<S则不移动,接着处理下一对象。就这样不同的对象虽然每次步幅相同,但由于内部变量S有差异就具有了不同的移动速度。当遇到加速,减速时(如吃了颗加速药,移动速度增加),只需要简单的增减S变量的值就可实现了。

我的游戏中是这样设计的,效果还是不错的,不知道有没有存在什么问题。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2007-5-12 12:06:00 | 显示全部楼层

Re:如何调整不同的对象具有不同的速度

A = A + SPEED * N
A是坐标, SPEED是计算用的时间补偿值,N是移动步长。


SPEED的计算:
Public Declare Function GetTickCount Lib "kernel32" () As Long

FPSY = GetTickCount()
FPSX = FPSY
SPEED = (FPSY - FPSX)

以前贴过很多例子了.

2

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
 楼主| 发表于 2007-5-12 14:29:00 | 显示全部楼层

Re: 如何调整不同的对象具有不同的速度

可能我表达的不够清楚,我想影响走动速度的主要是频率快慢,而不是步幅大小。考虑到一个步幅之间有一系列的分帧动作(从抬腿到落脚),如果单纯的通过改变步幅来提高或减慢速度(如PosX=PosX+Speed*N),会有这样一种情况:1步幅太小,看上去原地踏步。2步幅太大,视觉上滑步效果。这种缺陷在一些游戏中可以很明显的看出来,失真了。
可能会影响步幅的因素只能是跑步>行走,体形大的>体形小的,加速度行走步幅增加,减速度行走步幅减小。要调节行走速度最好的方法是调节步频,步幅大小在设计阶段就应该确定了,运行时应该是固定的(加速度,减速度时除外)。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-5-12 15:39:00 | 显示全部楼层

Re:如何调整不同的对象具有不同的速度

二者都用,根据具体情况而定。

人物走动肯定要配合步伐才可以,其它的,比如飞机飞行就可以平滑控制。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 11:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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