游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4665|回复: 17

问一个2D游戏地图上的问题

[复制链接]

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2008-6-11 13:26:00 | 显示全部楼层 |阅读模式
例如战棋类,当角色准备行动时,在地图上出现一个该角色的可行动范围,对该范围的画面处理我见过两种方法:1、该范围部分不变,地图其它部分透明变暗;2、该范围透明高亮,地图其它部分不变。

在技术上两种方法原理应同出一辙,那么具体怎么实现呢?我能想到两种方法:
1、对地图画面的像素临时计算产生半透明遮罩。
2、在生成地图时对每一块画面都同时产生一个半透明副本画面,当需要时覆盖相应块即可。

方法1似乎很耗费CPU,方法2会使地图资源的容量增大一倍,而且印象中好像很少有人这么做。所以想知道经历过的朋友采用哪种方法?是否还有更好的方法3、4...(假设想跑在并不是很块的机器上)?

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2008-6-11 13:56:00 | 显示全部楼层

Re:问一个2D游戏地图上的问题

该范围透明高亮,地图其它部分不变

不一定会增加一倍资源吧??少数颜色处理就行了。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-6-11 13:59:00 | 显示全部楼层

Re:问一个2D游戏地图上的问题

我可以帮你写例子,VB6的,下午吧给我点时间。

应当说在286的电脑时代这种设计方法就已经被广泛采用,所以应当和CPU的占用关系不大。

你的地图是由很多小块组成的,比如地图块是32*32一个单位,你有10*10的地图面积,
只需要循环100次

DIM M(10,10)

for x=1 t o10
for y=1 to 10
if m (x,y)= 1 then  使用ALPHA透明图片
if m (x,y)= 0 then  关闭ALPHA效果
next y
next x

就算是1000*1000对于现在的电脑速度也不是问题。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-6-11 14:01:00 | 显示全部楼层

Re: Re:问一个2D游戏地图上的问题

Miu.C: Re:问一个2D游戏地图上的问题

该范围透明高亮,地图其它部分不变

不一定会增加一倍资源吧??少数颜色处理就行了。


你写个例子证明下吧!! 你绝对写不出SLG游戏。

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2008-6-11 14:06:00 | 显示全部楼层

Re:问一个2D游戏地图上的问题

把可行动范围和以外的范围分开渲染不就行了么

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2008-6-11 14:11:00 | 显示全部楼层

Re: Re:问一个2D游戏地图上的问题

游戏之家站长: Re:问一个2D游戏地图上的问题

DIM M(10,10)

for x=1 t o10
for y=1 to 10
if m (x,y)= 1 then  使用ALPHA透明图片
if m (x,y)= 0 then  关闭ALPHA效果
next y
next x

如果可以到达的区域由你这么方方正正那还不如直接作为一大块处理,不知道你这几行代码有什么意义。
M不能表达变量的意义。
循环自变量一般用i,j.
数组不声明类型效率很低的,真可怜。

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
 楼主| 发表于 2008-6-11 14:15:00 | 显示全部楼层

Re:问一个2D游戏地图上的问题

谢谢,我不需要例子。我想知道的不是具体怎么实现,而是采用哪种思路去实现比较好。
游戏之家所说的
f m (x,y)= 1 then  使用ALPHA透明图片
if m (x,y)= 0 then  关闭ALPHA效果
是采用我说的方法2吧?——预先分别准备好带ALPHA效果和不带ALPHA效果的图片

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2008-6-11 14:17:00 | 显示全部楼层

Re:问一个2D游戏地图上的问题

载入地图的时候进行批量运算不就不用预先准备了??

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
 楼主| 发表于 2008-6-11 14:21:00 | 显示全部楼层

Re:问一个2D游戏地图上的问题

把可行动范围和以外的范围分开渲染是肯定的。如果你设计成行动范围透明高亮,其它部分不变,那么关键是对于行动范围这几格,你的步骤是1、实时获得它们的像素数据——2、ALPHA处理——3、再用处理后的像素数据渲染吗?如果行动范围比较大(格数多),这种实时处理在比较慢的机器上是否会不流畅?

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
 楼主| 发表于 2008-6-11 14:28:00 | 显示全部楼层

Re: Re:问一个2D游戏地图上的问题

Miu.C: Re:问一个2D游戏地图上的问题

载入地图的时候进行批量运算不就不用预先准备了??


载入地图时和生成地图时产生ALPHA副本都可以,我所说的方法2关键问题不在于增加存储容量,而在于有时这行不通,例如恰好你的行动范围内有个NPC,对他的图像也需要一并处理,而无论载入地图时还是生成地图时都不可能考虑到某一块到时候可能还站着某个NPC吧?这样似乎还得回到方法1——实时处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 07:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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