【零基础入门unity游戏开发——unity2D篇】2D射线和范围检测之Physics2D Ra ...

打印 上一主题 下一主题

主题 988|帖子 988|积分 2964

考虑到每个人基础大概不一样,且并不是所有人都有同时做2D、3D开发的需求,以是我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。
  
      
  • 【C#篇】:重要解说C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,恰当没有编程基础的同学入门。  
  • 【unity通用篇】:重要解说unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,恰当unity初学者入门。  
  • 【unity3D篇】:重要解说unity3D的知识,unity3D角色、unity3D物理体系、unity3D光照等,恰当只想做2D游戏的开发者学习。  
  • 【unity2D篇】unity2D篇:重要解说unity2D的知识,包括unity2D角色、unity2D物理体系、unity2D光照等,恰当只想做3D游戏的开发者学习。
  这样方便大家按需选择性的去学习,好比有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的发起从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不必要看了,节省学习时间成本。
  参考:【视频】:https://www.bilibili.com/video/BV18E411F7G6/

  
前言

之前我们已经介绍过3D版射线和范围检测的写过了,参考:


  • 【零基础入门unity游戏开发——unity3D篇】3D范围检测之Physics.OverlapBox盒状、Physics.OverlapSphere球形、Physics.OverlapCapsul胶囊
  • 【零基础入门unity游戏开发——unity3D篇】3D射线检测之Ray、Physics.Raycast、Physics.RaycastAll、Physics.RaycastNonAlloc的使用
2D版的射线和范围检测和3D版其实极为相似,无非是Physics换成了Physics2D,这里我就不对各个参数进行过多介绍了。直接以实战入手,这里我以角色跳跃为例,实现角色是否在地面判断的3种方法,及优缺点。
分析

通常我们不希望角色可以进行无穷次的跳跃
好比怎样让角色仅仅一次的跳跃呢?
我们的思绪是对这个角色进行一次检测,当角色打仗到了平台大概地面时,我们才允许角色跳跃

当角色是在空中时,角色不允许跳跃,直到落地为止

检测地面

   我们怎样去检测一个物体是否在地面上呢?
  1. 使用Raycast

1.1 介绍

我们可以去使用Raycast方法(射线检测),让他发射一条向下的射线,如果这条射线能检测到任何添加了Collider组件的平台,那就意味着我们的角色打仗地面了

  1. Physics2D.Raycast(xxx, xx, xx);
复制代码
方法第一个参数为射线发射点
第二个参数 为射线的方向
第三个参数为射线的检测距离
检测距离我们不能写成无穷长,检测的最大距离,应该是人物的中央点,到我们人物的【底部】再多出一点点的距离(一点点的距离我用0.1来体现),射线是从我们图片当中的中央点发出的

我们可以通过【sp.bounds.extents.y】直接获取这个整张图片一半高度

1.3 场景窗口可视化

为了能够在场景窗口种,可视化这条射线,我们可以通过Debug.DrawRay方法,参数传递的是射线的发射点和射线反向

1.4 完备实例代码

  1. private void CheckGround</
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表