作者chrisjeremy (Yomi)
看板GameDesign
标题Re: [请益] 关於人物移动的状态机
时间Sat Jun 9 01:49:25 2012
※ 引述《yoll522 (yolling)》之铭言:
: 前一阵子在这里询问各位高手人物移动该怎麽写比较好
: 得到了Chenglap大的答案,是用状态机的方式写
: 目前我们一个角色有四个方向,每个方向有3张,总共12张图片
: 所以我想到的方法是先创一个12个大小的阵列,
: 接着把那张角色图的每个位置撷取下来,放进该阵列的位置
: 大概如下
: Image *temp = new Image(L"路径"); //读取整张角色图,放进temp
: Image *Role = new Image[12]; //创一个Role的阵列,打算将角色图的每个位置存入
: Role[0] = xxxxxxxx //取出方向为上的第一张图
: Role[1] = xxxxxxxx //取出方向为上的第二张图
: Role[2] = xxxxxxxx //取出方向为上的第三张图
: 这样当我按下方向键上的时候,程式就会去执行Role[0]到Role[2]的图片
: 可是我查了很久的GOOGLE,并没有查到可以撷取图片的部分位置,然後存入阵列的
: 想请问各位高手,我的方法正确吗?或者是有什麽方法可以让我把角色存入阵列的?
: 谢谢
: 我本来有查到SetClip,但这似乎只能撷取图片的位置後,就直接画出去了
: 好像不能够存到阵列里@@
其实不需要把图片再从画面上撷取下来,这麽做效能会很差
继续使用原本的12张图就可以了
你第一步的构想是对的,先把12张图从档案中读取出来,放进你的Role[]里面
第二步,当你按上时就画Role[]的012张图
然後在画的时後,把座标往上移就可以了,这样子人物看起来就像是往上走了~
程式码看起来就会像这样
Image *Role = new Image[12];
Role[0] = new Image(L"路径1");
Role[1] = new Image(L"路径2");
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.225.76
1F:推 Hevak:这样的话用setclip不是比较好? 06/09 07:11
2F:→ chrisjeremy:刚刚回去找原文才发现,我一整个会错意(爆) 06/09 08:38
3F:→ chrisjeremy:如果把角色动作的图全部放在一张图里的话 06/09 08:39
4F:→ chrisjeremy:用setClip就够了,也不需要开Role[]了 06/09 08:42
5F:推 yoll522:谢谢,不好意思,我文章没有表达清楚是12张图在一个图档 06/10 18:36
6F:→ yoll522:里面,我等等去查查看setClip的用法,谢谢 06/10 18:36