游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3113|回复: 4

新手问个问题....

[复制链接]

2

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2005-8-17 00:16:00 | 显示全部楼层 |阅读模式
大家好..我是一个刚使用Delphi的新手..
我想用Delphi 写一个RPG,但是地图问题把我搞得非常迷惑...
就是地图上哪些可以行走,哪些要有半透明的问题...

我自己想了一个办法,方法如下:
使用一张BMP图片地图作为背景...
再用一张同样图片覆盖在第一张上面,把图片可行走的地方设置成改成白色..然后把把白色设置为透明,在DoCollision里面判断..如果主角与他碰撞就停止主角行走...

我只是有这个想的..但是好像不行..
不知道各位有什么好的建议

5

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2005-8-17 14:32:00 | 显示全部楼层

Re: 新手问个问题....

楼主好 其实用到颜色判断 一眼看下去好像好复杂喔 >< ( 应该是有这样的技术吧 )
我想 为你的地图自制一个阵列(二维的吧)
在每个Map[x][y] ( X is the X-coordinates , vice versa )
储存所有障碍物的讯息
如 可行走的元素值为 -1
其它障碍物依你所好把它们设大过零
然后把使用者的萤幕座标化为地图座标
就可以用简单的数学比较 if Map[x][y] <0 , ->> Can Pass.

我想最重要的还是量化的技巧跟座标转换吧
由于自己也是新手 思想还不成熟
请一起勉励

12

主题

67

帖子

67

积分

注册会员

Rank: 2

积分
67
QQ
发表于 2005-8-17 22:58:00 | 显示全部楼层

Re:新手问个问题....

不能放到DoCollision里
这样一碰撞你就不能控制它走出来了
因为DoCollision事件是已经在碰撞区才发生的
所以你要定义一个“下一步"变量  
比如 nextstepX, nextstepY  地图 障碍用-1表示
if MAP[role.nextstepX,role.nextstepY].blocks='-1' then
role.block:=true;

if role.block=false then
role.walk;

role.block:=false;

2

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2005-8-18 01:04:00 | 显示全部楼层

Re:新手问个问题....

我可以这样呀..每次把移动前的坐标先存起来。。
如果发生碰撞..就把主角坐标移动上一步的位置。。。就可以了。。
然后再拿一张图片放在前两张图片的上面。。把能行走但是不会遮挡的地方弄成白色。。然后白色透明。。然后再把图片设置成半透明。。。这样主角在物体背后如大树背后就可以有半透明效果了。。。

我觉得这样做起来比较复杂。。不知道有没有什么好的技术可以实现这个地图的思想。。

3

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2005-8-18 10:10:00 | 显示全部楼层

Re:新手问个问题....

先做一个地图编辑器。
定义地图中每个格子的属性。
格子的属性类型于下面这种
type
cell = record
   layer :integer;//地面层,中间层,高空层,可以处理遮挡问题。
   imageIndex:integer;//图片索引号
   canMove:boolean; //用于处理能否行走。
end;
  地图用一张二维表存储
  map: array[0..10,0..10] of cell;

行走的时候可以根据map[i,j].canMove 判断是否能够行走。可以根据map[i,j].layer来判断是否需要alpha混合。

你也可以根据实际需要,扩展cell,比如你的地图中有一团篝火,就需要把imageInedx改成一个数组,循环贴到屏幕上。等等。。。。。。。。。

本人也是个新手,如果不当之处,请各位高手指教。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 11:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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