如何使玩家按格子移动?以及如何处理碰撞?
godot吧
全部回复
仅看楼主
level 7
阿噜素
楼主
如何使玩家按格子移动?以及如何处理碰撞?
2020年08月28日 23点08分
1
level 7
阿噜素
楼主
预期效果是按一个方向键,向方向移动一格,像平移那样,移过去
2020年08月28日 23点08分
2
level 7
阿噜素
楼主
我使用了KinematicBody2D,
移动的实现思路是:我给定了每次移动的像素(16像素),并通过数学上的计算使玩家移动这么长的距离
2020年08月28日 23点08分
3
level 7
阿噜素
楼主
但是在与碰撞体发生碰撞后,产生的反作用力使玩家偏移了一些位置,使得玩家不再处于网格的正中央,此时再进行移动,就会产生一种诡异的情况:一条直直的路,玩家进不去,因为玩家的中心在两格之间,脚踩两条船(两个格)
2020年08月28日 23点08分
4
level 7
阿噜素
楼主
以方向设定位置一步到位,再播放一个位移动画的想法我也有过,第一是如何设置这样一个不跟随父结点的动画,第二是这样子很难处理碰撞,可能需要手动获取tilemap中的各种tile并判断其是否为碰撞体(有没有接口可供判断我还不知道)
2020年08月28日 23点08分
5
level 11
Njff
官方有现成的例子:
https://godotengine.org/asset-library/asset/520
2020年08月29日 05点08分
6
阿噜素
谢谢
2020年08月29日 05点08分
吧务
level 15
人类的大敌
其实这种按格子移动一般不使用碰撞体,而是全部采用坐标计算,就是在一个数组里设置“不可通过”的坐标,然后遍历这个数组来判断哪里不能过去
下图用一张动态图来展示不可通过的格子,图中带有红色斜杠的格子是不可通过的,下图是动态图,手机贴吧需要点击查看:
在图中可以看到,即使角色碰撞到了不可通过的区域,也依然能够从中间的缝隙中移动进去,因为实际上这个场景中没有碰撞体,全都是通过计算实现的
2020年08月30日 20点08分
8
阿噜素
谢谢~
2020年08月31日 00点08分
1