为什么你的角色总是能穿墙

165 阅读4分钟

嗨!大家好,我是会做游戏也会教你做游戏的小蚂蚁。欢迎关注微信公众号【小蚂蚁教你做游戏】,每天学点儿做游戏的知识。

在微信小游戏制作工具中,关于物理行为固体行为的使用,很多人都遇到过问题。其中一个最常见的问题就是“为什么我的角色能穿墙呢?”(或许是因为你的角色具备特异功能?),今天这篇文章分享一下关于这两种行为的最常见的两种错误用法。

将物理行为和固体行为混用

这是一种最常见的错误用法,很多同学都是先使用了物理行为,接着当需要做一个不能穿过的墙壁时,再打开行为面板,就发了固体行为,根据固体行为的描述“精灵具备不可穿透性,可用作地板或者墙壁”,会发现,哎哟!这个不就刚好满足了我的不能穿墙的需求了吗?于是乎,就给墙壁增加了固体行为,结果发现角色顺利的穿过了墙壁。不禁纳闷,这个固体行为为什么不管用呢?

图片

其实,哪怕你只有一次仔细的阅读了所有行为的描述,就会发现,下面有一个平台角色,它的描述是这样的。

图片

请再仔细阅读一遍:添加此行为后,精灵可以在平台游戏上跳跃,跑动,配合“固体”和“跳跃穿透”一起使用。看到了不?固体行为是配合平台角色行为一块儿使用的,它不是跟物理行为一块儿使用的。

那使用物理行为,如何做一个不能穿透的墙壁呢?

图片

如图,物理行为中倒数第二个属性是“类型”,其中包含两个属性,动态刚体静态刚体动态刚体用于游戏中的会动的精灵,比如说移动的人物角色,静态刚体用于游戏中的静态的精灵,比如说静止的地面或者墙壁。

举个例子,现在你要做一个人物角色,可以站在地上,向前移动时前方有一个无法穿过的墙。那就可以这样设置:

图片

如图,为每一个精灵都增加物理行为,区别是角色使用的类型为“动态刚体”,地面和墙壁使用的类型为“静态刚体”。

运行后看到的效果是这样:

图片

物理行为只需要单独使用,不能与“固体”混用(混了的话也不好用)。会动的精灵使用“动态刚体”,不动的精灵使用“静态刚体”。

使用了平台角色和固体行为,但角色还是穿墙了

这个也是很多同学遇到过的问题,明明用的是平台角色和固体行为,但为什么固体行为不管用,角色还是能够顺利的穿墙呢?

出现这个问题的原因,是因为虽然使用了平台角色行为,但是没有使用平台角色行为所提供的移动控制积木,而是通过坐标位置设置了角色的移动。

可能不太好理解,接下来,我们举个示例,就很容易明白了。

图片

还是这个场景,不过这次我们不用物理行为了,而是使用平台角色行为(小怪兽)搭配固体行为(地面和墙壁)。

我们给小怪兽增加一段向右移动的积木逻辑。

图片

如图,在重复执行积木中,不停的增加的小怪兽的X坐标,就能够让它一直向右移动。

运行一下示例,看看结果。

图片

小怪兽忽视了墙壁的存在,直接就穿过去了。

接着,我们做一点儿修改,使用平台角色行为提供的“平台角色右移”积木,替换原来的设置X坐标增加的积木。

图片

再次运行一下示例,看看结果。

图片

为什么使用“平台角色右移”的积木有效,使用“设置X坐标增加”的积木无效呢?因为“固体”是搭配“平台角色”行为一起使用的,只有使用平台角色提供的移动积木控制精灵的移动时,才会进行“固定”的碰撞检测。如果你通过坐标设置精灵的位置,那“固体”墙壁是不会参与碰撞检测的。

最后,我们总结一下,关于物理行为和固体行为的几点使用方法:

  • 物理行为需要独立使用,会动的精灵用动态刚体,不会动的精灵用静态刚体

  • 固体行为需要搭配平台角色行为一起使用才有效;

  • 添加平台角色行为的精灵需要使用平台角色提供的积木来控制移动和跳跃,不能直接使用坐标位置控制精灵的移动;

记住这三点,能够有效的帮助你避免一些错误的使用方法。从此就再也不用为“我的角色为什么会穿墙”而困扰了。