首页 > 其他分享 >为什么你的游戏角色总是能穿墙

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

时间:2023-01-17 12:00:44浏览次数:50  
标签:游戏 角色 平台 精灵 使用 穿墙 行为 固体

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

标签:游戏,角色,平台,精灵,使用,穿墙,行为,固体
From: https://blog.51cto.com/u_15530520/6012038

相关文章

  • 【补档】15 Jan 2293. 极大极小游戏(每日一题)
    15Jan2293.极大极小游戏给你一个下标从0开始的整数数组nums,其长度是2的幂。对nums执行下述算法:设n等于nums的长度,如果n==1,终止算法过程。否则,创建......
  • 用Three.js写h5小游戏-3d飞机大战
    用Three.js写h5小游戏-飞机大战​​博主的话​​​​运行图片​​​​目录路径!​​index.html​​博主的话Three.js是js的一个3D引擎,比较复杂。比如光是Three.js就附带了10......
  • C语言足球游戏软件
    C语言足球游戏软件有一款足球游戏软件FIFA有一款足球游戏软件FIFA,游戏者可以选择任意一只球队,并在比赛中的某一时刻控制本队任意一名球员....现要求,请你设计该游戏底层......
  • 文明6铂金版 mac(策略游戏) v1.3.13中文激活版
    文明6是人气颇高的《文明》系列中的经典作品,共有20位史上著名的领袖任君挑选,包括秦始皇。全新扩展包中,科技与市政树已扩展至未来时代,玩家们可在8个新文明与9位新领袖中进行......
  • 连连看html游戏全代码js、jquery操作
    连连看html游戏全代码js、jquery操作​​运行图片​​​​目录路径​​​​连连看水果方块版.html​​​​连连看算法​​​​进行下一个游戏的开发!​​​​注意事项​​我......
  • 分析JDK、JRE、JVM、JIT 四者的关系与在代码运行时扮演的角色
    [1]四者的简要介绍  ·​​JDK(JavaDevelopmentKit)​​是针对Java开发人员的产品,它包括了Java运行环境JRE、Java工具和Java基础类库;  ·​​JRE(JavaRuntime......
  • 五子棋html游戏代码与算法介绍
    五子棋html游戏代码与算法介绍运行图片目录路径五子棋.html五子棋算法进行下一个游戏的开发!注意事项我会把html文件、css文件提供下载地址,文件夹路径也展示给大家。但是图片......
  • lupohan44/GamesHub docker版 限免游戏喜加一全家桶
    项目链接:https://github.com/lupohan44/GamesHub前置条件:境外服务器(境内请准备代理),已安装docker电报机器人token使用其他通知方式参考https://github.com/caronc/a......
  • 8KB的C#贪吃蛇游戏热点答疑和.NET7版本
    在之前的一篇文章《看我是如何用C#编写一个小于8KB的贪吃蛇游戏》中,介绍了在.NETCore3.0的环境下如何将贪吃蛇游戏降低到8KB。不过也有很多小伙伴提出了一些疑问和看法,主......
  • 适合编程初学者的开源项目:小游戏2048(安卓Compose版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。2048游戏规则一共16个单元格,初始时由2或者4构成。1、手指向一个方向滑动,所有格子会向那个方向运动。2......