游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2718|回复: 7

关于游戏开发的“遇敌”这里,我还是想不通

[复制链接]

20

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2005-9-8 22:06:00 | 显示全部楼层 |阅读模式
像超级玛丽或核金弹头这些过关型的游戏,通常是走到某一个地方,就会跳一些敌人出来的,我是不明白这里是怎样设计。
1.是计算当前拉动(横向滚动)了多远,如果拉到一定的长度后,就跳出一个敌人?
2.那么敌人又是如何控制的?是做成一个类CBadMan,然后有一个SetAutoMove()方法,在这个方法里,实际上是建一个TIMER,使这个人按照设置好的动作去移动?

2

主题

53

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2005-9-8 22:21:00 | 显示全部楼层

Re:关于游戏开发的“遇敌”这里,我还是想不通

状态机

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2005-9-8 23:49:00 | 显示全部楼层

Re:关于游戏开发的“遇敌”这里,我还是想不通

在地图中记录敌人的坐标,地图移动时察看每一个敌人的坐标,如果可显示就让它动起来。

20

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2005-9-9 01:04:00 | 显示全部楼层

Re:关于游戏开发的“遇敌”这里,我还是想不通

状态机?即是?

在地图中记录敌人的坐标,是不是用一个结构,如
typedef struct _Mapinfo
{
      int bmpindex;      //地图块的序号
      int x;
      int y;
      BOOL hasman;     //这块地图是否有敌人
      UINT mantype;    //敌人的类型
}Mapinfo;

这样啊?然后每读一块地图块的时候,就判断一吓是否有敌人,如果有,则new 一个敌人的实例,然后按我所想的写一个SetAutoMove()让他执行他的动作?

9

主题

198

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2005-9-9 01:04:00 | 显示全部楼层

Re:关于游戏开发的“遇敌”这里,我还是想不通

这有很多的解决方案,一般的做法是
1。状态机,就是敌人是在固定位置,初始状态设为等待(在这个状态下,是不与参与ai,图像,物理等运算的),还有一个触发点,当主角到达这个出发点,触发是事件,把敌人的状态设为活跃。
2。敌人的控制可以与主角的控制是一样的,如:玩家按方向键,主角就像那个方向走,而敌人的方向键输入无非是由ai控制的。

20

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2005-9-9 11:12:00 | 显示全部楼层

Re:关于游戏开发的“遇敌”这里,我还是想不通

噢,知道了,那么敌人你们是不是做成一个类?然后对应不同的敌人,有不同的动作?

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-9-9 14:18:00 | 显示全部楼层

Re:关于游戏开发的“遇敌”这里,我还是想不通

http://bbs.gameres.com/showthread.asp?threadid=36795

9

主题

198

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2005-9-9 22:46:00 | 显示全部楼层

Re:关于游戏开发的“遇敌”这里,我还是想不通

如何设计类,这是个仁者见仁,智者见智的问题。你既可以使用继承,也可以使用containment来实现。这个取决于你的系统设计。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 18:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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