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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么你的游戏角色总是能穿墙相关的知识,希望对你有一定的参考价值。

本文首发于微信公众号【小蚂蚁教你做游戏】,欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。

嗨!大家好,我是小蚂蚁。

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

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

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

为什么你的游戏角色总是能穿墙_游戏开发教程

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

为什么你的游戏角色总是能穿墙_原创教程_02

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

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

为什么你的游戏角色总是能穿墙_原创教程_03

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

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

为什么你的游戏角色总是能穿墙_游戏开发_04

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

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

为什么你的游戏角色总是能穿墙_游戏开发教程_05

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

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

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

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

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

为什么你的游戏角色总是能穿墙_游戏开发_06

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

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

为什么你的游戏角色总是能穿墙_游戏开发教程_07

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

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

为什么你的游戏角色总是能穿墙_游戏开发教程_08

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

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

为什么你的游戏角色总是能穿墙_游戏开发_09

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

为什么你的游戏角色总是能穿墙_游戏开发_10

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

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

  • 物理行为需要独立使用,会动的精灵用动态刚体,不会动的精灵用静态刚体
  • 固体行为需要搭配平台角色行为一起使用才有效;
  • 添加平台角色行为的精灵需要使用平台角色提供的积木来控制移动和跳跃,不能直接使用坐标位置控制精灵的移动;

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


欢迎关注小蚂蚁的微信公众号【小蚂蚁教你做游戏】,学习更多游戏开发原创教程。

为什么你的游戏角色总是能穿墙_游戏开发教程_11

以上是关于为什么你的游戏角色总是能穿墙的主要内容,如果未能解决你的问题,请参考以下文章

乐乐积木游戏-汽车恐龙城市积木拼图游戏

unity 3D 中创建的BOX,BOX collider已经打开了,为啥还是能穿墙,另外如何用鼠标转换视角

dp积木城堡

积木城堡

贪吃蛇二代 —— 穿墙版(C语言实现)

洛谷P1504 积木城堡