游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3532|回复: 5

[求助]2D游戏中精灵是如何来控制行走的?

[复制链接]

15

主题

231

帖子

243

积分

中级会员

Rank: 3Rank: 3

积分
243
发表于 2009-4-30 23:45:00 | 显示全部楼层 |阅读模式
如下图,我不明白用C++是怎么样来处理这幅图在2D地图上面行走的,我是这个行业的初学者,请大家说详细点好吗?



我在做一个2D的游戏,到这里卡住了,看了些,但不能讲出核心的,光实现就有好几种,我也不知道哪种最好,看到一种自认为最好的,代码简洁的,却没有注释,看得我头直发晕.,这个问题困绕我好几天了.求大大帮解.

8

主题

125

帖子

125

积分

注册会员

Rank: 2

积分
125
发表于 2009-5-4 04:23:00 | 显示全部楼层

Re:[求助]2D游戏中精灵是如何来控制行走的?

用GDI还是GDI+还是DX在做?
不一定要看别人的代码,按照API可以自己实现出来。
再是,你的问题要说具体点,不然不好解决你的问题!
比如用的GDI还是DX,或者是技术上的哪方面……
总之,都要绘制精灵单位的裁剪区域,然后逻辑上根据角色的方向换帧的行,移动时则是循环帧的列。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2009-5-6 23:10:00 | 显示全部楼层

Re:[求助]2D游戏中精灵是如何来控制行走的?

1 逻辑层: 存储人的方向,以及表示是否正在行走的状态,以及行走时间。
2 表示层: 根据上面的信息,计算出需要播放哪一个动画,以及动画的时刻,
接下来打开动画信息文件,发现,是frame动画,那么,
根据动画的时刻,和FPS,计算出当前的逻辑frame号,然后查frame表,求物理frame
(物理frame可以是2维或1维的编排方式)

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2009-5-6 23:38:00 | 显示全部楼层

Re:[求助]2D游戏中精灵是如何来控制行走的?

伪代码如下:

逻辑层:

DIRECTION GetDirection();
STATE GetState(); // 比如走路,停止
STATETIME GetStateTime(); // 比如走路的第3秒,等

表示层:

void Update(yours:ouble dt) // dt - 两个frame之间的间隔(这里不用)
{
   // 根据方向和状态,算出要播放哪一个动画,并返回该动画
   // 这不会导致多次读取动画资源,因为多个anim对象可以共享同一个图片资源
   SmartPtr<IAnimation> anim = GetAnimation (GetDirection(), GetState());

   // 取消自动播放动画,因为我们在手工控制每时每刻的动画播放位置。
   anim->SetAutoPlay(yours::False);

   // 设置动画的当前时间
   anim->SetCurrentTime (GetStateTime());

   // 为这个精灵(代表你的角色)设置正确的动画
   <<TheSprite>>.Animation = anim;

   // 坐标的设置就省略不写了...
}

class IFrameAnimation : public IAnimation // frame动画接口
{
public:
    virtual void SetCurrentFrame(FRAME frame)=0;
    virtual FRAME GetCurrentFrame()=0;
    virtual FPS GetFPS()=0;
// ... ...
}

class CellAnimation : public IFrameAnimation // 处理楼主的这种动画图片
{
public:
    virtual void SetCurrentTime(TIME frame)=0; // 根据time和FPS计算出frame
    virtual TIME GetCurrentTime()=0; // 根据FPS和frame计算出time
    virtual void SetCurrentFrame(FRAME frame);
    virtual FRAME GetCurrentFrame();
    virtual FPS GetFPS()=0;

    virtual void Render(<<参数>>);
    // 绘制当前frame
    // 需要查表,把frame转化成物理frame
// ... ...
}

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-6-3 13:43:00 | 显示全部楼层

Re:[求助]2D游戏中精灵是如何来控制行走的?

播放,只要指定播放范围,按帖播放就行了,,
移动,只需要MOVE,按SPEED,MOVE rcSrc->rcDst;

5

主题

53

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2009-6-14 20:23:00 | 显示全部楼层

Re:[求助]2D游戏中精灵是如何来控制行走的?

不知道,只认识圣剑图片的飘过...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 23:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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