新人请教战棋类游戏移动的思路
gamemaker吧
全部回复
仅看楼主
level 14
暂时的思路是这样,obj0记录鼠标坐标,obj1是单位本体。点击obj1选定后,再点击一个点,通过obj0来返回鼠标坐标,然后让obj1移动过去,是这样的思路么?
2017年09月06日 12点09分 1
level 9
我觉得可以在obj1声明 变量targetx 和targety 来保存要移动的目的地。[呵呵]
2017年09月06日 12点09分 2
[乖]没找到案例,希望大神能够详细解释一下
2017年09月06日 13点09分
level 12
思路是对的,在obj0记录鼠标位置可以减少工作量。但是如果考虑网格,障碍,移动距离的话可没这么简单了。
2017年09月06日 14点09分 3
[乖]感谢指导,网格的话是要用对齐网格的功能么?移动距离我想用数组来确定,因为我设计的单位的移动范围不是规则的几何图形,比如申字这样的范围
2017年09月06日 18点09分
level 9
我对战旗也挺感兴趣的。尝试去做了一下。需要自己定义人物在网格上的坐标,然后要有一个obj把mouse_x mouse_y也转换成网格上的坐标。
2017年09月06日 16点09分 4
[吐舌]感谢,今晚刚刚根据红激的教程用数组做了网格,我用上文中的obj0来判断选定的obj1的可移动范围,然后显示该范围。现在在琢磨如何在点击obj1后显示由obj0绘制的范围,等我再啃几天教程有了进展后再来请教大神
2017年09月06日 18点09分
level 12

lz
提供一个移动距离计算的想法。给房间铺满代表可站立方块的obj,从选择对象所在的格开始,记变量n为0,然后从中心向外给可站立方块的变量n赋值增加1,若障碍方块则不赋值。直到达到移动距离则停止,然后画出这些操作过的方块,即为可移动距离。有点复杂,需要理解。
2017年09月07日 14点09分 6
[笑眼]感谢。现在能找到的两个slg的demo里红激讲过的slg圣火纹章好像就是跟你想的一样,铺了全图的obj来检测可移动范围,另外一个demo最终幻想战略版,只用obj作障碍物限制移动范围。demo比较复杂,我研究不出来[乖]
2017年09月08日 02点09分
level 9
http://bbs.66rpg.com/thread-133052-1-1.html
这个人的思路很不错
我贴过来吧
说明一下我的移动算法吧:
首先要说明的是,本移动范围算法参考的是网上广为流传的寻路算法,有兴趣的人可以去网上搜一下。
本算法中有两个list和一个节点类:
movement_list:记录已经检查完确定为可移动格的节点的list
checkround_list:记录需要对周围四个继续探索的节点的list
节点类内有属性:
x:节点x坐标,
y:节点y坐标,
movement_cost:从起始位置到本节点的移动消耗,
计算方式是父节点的移动消耗+本次的移动消耗
father_node:父节点,即探索该节点的节点
算法:
设起点位置为x0,y0. 移动能力为5步。本篇讨论的是4方向移动。一步的移动消耗为10.
1.取得起始坐标x0,y0,生成节点。如果移动能力不为0,那麽将起始节点放入checkround_list
2.取出checkround_list中的一个要检测的节点。因为checkround_list中的节点记录的是需要对周围四个继续探索的节点,也就是说它本身必然已经被判定为可移动的了。所以:
3.将要测的节点放入movement_list。
4.检测节点周围四格之前,我们先判断该节点的移动消耗是否已经到达它的移动能力极限(或十分接近以至于无法继续探索),也就是:判断节点的移动消耗movement_cost>(移动范围-1)。如果判断为真,跳过步骤5
5.检测节点(暂时可理解为父节点)周围四格(子节点)
1)如果该节点不可通过(障碍物?敌人?)或已经是可移动格(父节点之类的)为真的话,跳过下面检测
2)取得该节点所在位置的移动损耗(默认为10,但考虑到地形特性,比如沙漠,可设为20),
如果 该地形移动损耗+父节点移动损耗>移动能力,那么,这一点已经是你到达不了的地方了,跳过下步吧
3)通过以上验证,可判断其为可移动节点,放入checkround_list等待探索周围四格
6.如果checkround_list不为空,继续步骤2.否则,完成探索任务。movement_list内存入了所有可移动节点。
嗯,以上为移动范围算法求解
2017年09月10日 05点09分 7
感谢[吐舌]虽然看的不是很明白,我笑话消化
2017年09月10日 10点09分
@中国阻击手 你需要新建一个obj,叫做obj_nod,在create写三个属性, xx, yy, movement_cost; 这个就是节点了
2017年09月10日 11点09分
@积极而小米 [乖]我用一个obj0作为移动功能,点了后显示移动范围,用with(obj1)来控制obj1的移动,现在发现若是有多个个体,比如obj2,obj3的话我得做好几个对应的obj0的控制移动。有没有什么比较好的方法?
2017年09月14日 15点09分
@中国阻击手 移动直接写在obj1里面就好了。
2017年09月14日 23点09分
level 1
楼主你好,我现在在做期末的课程设计,做得是战棋类游戏,可不可以留个企鹅一起讨论一下
2018年06月26日 07点06分 9
1