GameMaker: Studio 学习笔记(二)深度 物理属性 房间切换 滑冰

    xiaoxiao2021-03-25  64


    Depth

    深度的设置其实是改变绘制次序,以免发生阻挡等不合理的情况。

    基本在创建的时候(create Event)设置 “depth = *;”


    Physical

    物理属性其实还不太理解=理解里物理属性就是对真实世界的一种模拟,比如对于超级马里奥这种游戏,可以利用物理属性提供加速度(所以我做俯视图的时候因为房间的重力加速度忘改了就目瞪口呆的看着房子里的东西往下掉= =)

    这么想也就可以理解为什么碰撞形状那么有限了(圆形circle、方形box还有不超过六条边的凸边形Shape)毕竟碰撞这种处理起来应该还是蛮复杂的。


    房间转换

    啊从哪开始说呢~

    房间转换其实如果房间的联通是树的结构的话(并且房间之间的连接没有太宽,不然切换的时候会有违和感),其实没必要执着于把房间的这个人物移动到另一个房间……每个房间有一个主角理论上是可行的。而且省很多事……把主角也设置成persistent就好。

    然后当初做的时候一开始的问题是: 如果我要让主角的切换的自然的话,我需要实现的一个是把主角的坐标切到合适的点,另一个是切换房间。 可是当我把这两个事件添加到碰撞事件中后,(切换房间用脚本,跳跃用Jump,在move栏下),之后只会执行jump没有执行房间切换。 文档对此的可能解释是,切换房间操作会在任务的最后执行。

    后来都写成脚本之后就好了……

    还有一个问题是当人物转换房间的时候在人物create的时候设置的phy_fixed_rotation属性(禁止旋转)不会保持。后来的方法是,把这一命令加到Room Start当中。

    还有就是,如果每两个房间切换都用一个新的obj太麻烦了- -后来用的方法是在房间内右键obj然后改变create的代码,因为每此切换要存储的就是:下一次的坐标和房间。


    滑冰

    这里想要类似于口袋妖怪一样的效果,在运动过程中不接受键盘事件。

    这里需要一个主角的状态量,在发生碰撞的时候主角的状态修改为REST。 然后 计划很美好……后面的结构就是,如果主角贴边走的话就默认是(一直处于碰撞状态)也就是说滑冰效果没啥用了…… 然后处理方法是,在每次碰撞的时候都把主角的坐标往反方向移一格,比如向上走的过程中pia一下撞上了,然后就偷偷把主角坐标的y+1就让他在接下来往左右行走的过程中不碰到边(差了一格)。

    下为碰撞的代码

    在这个过程中对障碍的位置计算还是需要比较准确的(不然在运动的中途擦到边缘很容易停下来了)。

    转载请注明原文地址: https://ju.6miu.com/read-34083.html

    最新回复(0)