2D游戏中跳跃是不可或缺的功能,要实现跳跃功能,就必须进行地面检测!常规方法是使用一根往角色下方延伸的射线检测,但是这种方法在一些复杂不规则的地面效果通常不尽人意。通过增加射线数量,即可完善这种方法的不足,达到在复杂地面也能正确检测角色是否处于地面。

1、建立必要变量

bool isGrounded;
public Transform [] groundChecks = new Transform [3];
public LayerMask whatIsGround;

2、在角色对象下建立三个空的子物体,并分别把三个子物体拖动到角色的左下方、正下方、右下方与地面接触的地方。

3、把建立的三个子物体分别拖到建立的transform数组中,同时在LayerMask中勾选角色要碰撞的图层

4、编写地面检测函数

  void CheckIsGroud () {bool checkResult;for(int i = 0; i < 3; i++) {checkResult = Physics2D.Linecast( transform.position, groundChecks [i].position, whatIsGround );isGrounded = checkResult;if (isGrounded)break;}}

5、添加绘制射线的函数,用于查看调试射线距离

   private void OnDrawGizmos () {Gizmos.color = Color.red;for (int i = 0; i < 3; i++) {          Gizmos.DrawLine( transform.position, groundChecks [i].position );}}

最后把CheckIsGroud ()函数放入Update即可,大功告成!

unity-2D游戏地面检测 三射线检测相关推荐

  1. 【Unity】Unity 2D游戏开发(三)2D游戏常用功能及插件

    377节附近开始的2D游戏实例,基础的功能开发可以参考. 碰撞忽略 private void Start() {// 让第八层和第九层忽略碰撞,此段代码可以写在通用脚本内Physics2D.Ignor ...

  2. 幻境游戏里人物关于射线检测的问题(一)

    1.在做一个平台跳格子的2d游戏里面,有关射线检测在人物跳起的时候会有一次报错,射线检测为空,其实就是我平台搭建的时候两个之间有一条缝隙,没有看见导致的. 2.在碰撞器的时候有时候人物会跳起两次,但是 ...

  3. Unity 2D游戏开发教程之为游戏场景添加多个地面

    Unity 2D游戏开发教程之为游戏场景添加多个地面 为游戏场景添加多个地面 显然,只有一个地面的游戏场景太小了,根本不够精灵四处活动的.那么,本节就来介绍一种简单的方法,可以为游戏场景添加多个地面. ...

  4. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  5. Unity 2D游戏开发教程之精灵的死亡和重生

    Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...

  6. Unity 2D游戏开发教程之使用脚本实现游戏逻辑

    Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...

  7. 【Unity】Unity 2D游戏开发(一)U2D基础功能

    文章目录 Unity 2D游戏开发基础知识 Animation动画 SortingLayer层排序 Physics 2D物理2D Rigidbody 2D刚体 示例 1.点击鼠标发出子弹 2.子弹打中 ...

  8. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  9. ​Unity 2D游戏开发教程之2D游戏的运行效果

    ​Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑 ...

最新文章

  1. Python3 Selenium自动化web测试 == 第三节 常用WebDriver API使用示例上(24个API)
  2. POJ3335(判断多边形内核是否存在)
  3. Spring Cloud--Honghu Cloud分布式微服务云系统—组件化
  4. blp模型 上读下写_Golang 并发模型系列:1. 轻松入门流水线模型
  5. .NET-记一次架构优化实战与方案-前端优化
  6. oracle批量生成索引,ORACLE迁移时批量导出索引、存储过程,表结构等
  7. 深度学习 3 循环神经网络 RNN Recurrent Neural Networks
  8. 韩顺平php视频笔记47 函数使用
  9. 高质量的工程代码为什么难写
  10. CentOS下搭建测试WEB平台
  11. Linux入门(2)_给初学者的建议
  12. 如何训练自己的编程思路
  13. HDU2010 水仙花数【进制】
  14. (day 16 - 双指针)剑指 Offer 35. 复杂链表的复制
  15. 阿里巴巴Java开发手册(黄山版)正式亮相,新增11条规约
  16. Java小程序--抓取emai
  17. html加载fbx模型,[Unity菜鸟] FBX模型动画提取
  18. 论文《Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation ...》阅读
  19. JavaScript 数组对象切片
  20. 美国音乐学院计算机音乐专业排名2015年,2019USNEWS美国音乐专业排名前100!

热门文章

  1. 【认知觉醒:开启自我改变的原动力】
  2. 福莱特法公式matlab,浙江省公路出行交通分布模型研究
  3. 吃鸡服务器维护7月5号,绝地求生7月5日维护到几点 7月5日吃鸡更新维护公告
  4. 实不相瞒,我做海外TikTok搬运视频一年的收入,可能是你10年的工资
  5. 如何实现调用阿里云三方的api
  6. html字体标签设计,36个重要的HTML标签
  7. 黑苹果2k显示器开启hidpi_黑苹果开启硬件加速
  8. tarjan算法与无向图的连通性(割点,桥,双连通分量,缩点)
  9. python制作浏览器
  10. 解决elasticsearch里拒绝更新mapping设置的错误