[CocosCreator]射线检测

CocosCreator 2D平台跳跃开发:Collider碰撞器核心应用与手感优化实战 在游戏开发中,碰撞检测是实现物理交互的基础,它定义了游戏对象之间的边界与接触规则。其原理是通过几何形状计算来判断物体是否发生重叠或接触,是物理引擎的核心功能之一。这项技术的价值在于,它使得角色移动、环境交互、战斗判定等核心玩法得以实现,是构建可信、可玩游戏世界的基石。在2D平台跳跃、动作冒险、射击等游戏类型中,碰撞检测的应用尤为关键,直接决定了角色的操作手感和游戏的物理反馈。本文聚焦于使用CocosCreator引擎开发2D平台跳跃游戏,深入探讨如何系统性地运用Collider组件,通过合理的碰撞体选型、精 阅读详情

射线检测属于物理系统大类中的小类,Cocos的物理系统使用的是Box2D
射线检测建议大家先扫一下CocosCreator的官方文档
同时,@wangwenbo有个文章写的很细,算是对官方文档的补充。

以下为笔者在使用过程中遇到的坑,希望能帮到你。
1,物理系统需要在onLoad()中开启。

    onLoad() {
        cc.director.getPhysicsManager().enabled = true;
    }

若不开启,使用射线检测的函数时会报Init()错误。只能在onLoad()方法中开启,若在start()方法中开启,虽然不报错了,但是检测不到射线碰撞。

2,射线检测的坐标都需要统一转换为世界坐标。

3,物理组件、碰撞组件,傻傻不不清楚。
笔者曾经患个错误,为一个Sprite加了碰撞组件->Box Collider,也加了RigidBody。但是搞死检测不到射线。
后来才发现,组件加错了。应该是物理组件->Collider->Box。添加了该Box组件后,还会自动添加其依赖的RigidBody组件。刚体自带重力,为防止下落可以设置Gravity Scale为0。
Cocos论坛上这个兄弟我估计就是这个原因导致的。

游戏技能一:激光扫射的实现【CocosCreator 2D】【TypeScript】 激光扫射技能,感觉还是挺酷炫的,可以应用在镭射眼、奥特曼光波、那些张口哇一下就来的激光攻击等。 本篇实现方法没采用Cocos的物理引擎碰撞检测,主要用的是图形与图形是否有交集的检测cc.Intersection.polygonPolygon() 阅读详情

相关推荐

CocosCreator实现的 解救人质 游戏,学会碰撞检测rescue.7z

CocosCreator实现的 解救人质 游戏,学会碰撞检测rescue.7z // Bullet.js cc.Class({ extends: cc.Component, properties: { mSpeed: 300, }, // LIFE-CYCLE CALLBACKS: // onLoad () {}, start() { var manager = cc.director.getCollisionManager(); // 获取碰撞检测系统 manager.enabled = true; }, update(dt) { // 设置子弹移动,当超出屏幕范围未发生碰撞时自动销毁 this.node.y += this.mSpeed * dt; if (this.node.y > 580) { console.log('超出屏幕范围,子弹销毁!'); this.node.destroy(); } }, /** * 当碰撞产生的时候调用 * @param {Collider} other 产生碰撞的另一个碰撞组件 * @param {Collider} self 产生碰撞的自身的碰撞组件 */ onCollisionEnter: function (other, self) { console.log('on collision enter'); if (other.tag == 1) { // 子弹碰到人质时,解救失败! console.log('解救人质失败!'); var failLabel = this.node.parent.getChildByName('failLabel'); failLabel.active = true; this.node.destroy(); } else if (other.tag == 2) { // 子弹碰到敌人时,解救成功! console.log('解救人质成功!'); var successLabel = this.node.parent.getChildByName('successLabel'); successLabel.active = true; this.node.destroy(); } }, /** * 当碰撞产生后,碰撞结束前的情况下,每次计算碰撞结果后调用 * @param {Collider} other 产生碰撞的另一个碰撞组件 * @param {Collider} self 产生碰撞的自身的碰撞组件 */ onCollisionStay: function (other, self) { console.log('on collision stay'); }, /** * 当碰撞结束后调用 * @param {Collider} other 产生碰撞的另一个碰撞组件 * @param {Collider} self 产生碰撞的自身的碰撞组件 */ onCollisionExit: function (other, self) { console.log('on collision exit'); } });

Cocos Creator 开发实战——射线测试

Cocos Creator 开发实战——射线测试射线测试基础知识开启物理引擎添加物理碰撞物体通过触摸点触发射线测试结果在这基础上增加表现形式 Cocos Creator 开发实战——射线测试 近期写了一款基于射线检测的小游戏,本篇会介绍射线检测知识和一些坑,保证大家会用并且避免引擎bug。 射线测试基础知识 先看一遍官网,在页面的最下面部分。射线测试需要用到物理引擎,接下来开始教学。 开启物理引...

creator_HY的博客 7080

Cocos Creator模拟射箭效果shoot.zip

Cocos Creator模拟射箭效果shoot.zip // Learn cc.Class: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/class.html // - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/class.html // Learn Attribute: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] https://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html cc.Class({ extends: cc.Component, properties: { txtGrade: cc.Label, txtTime: cc.Label, btnStart: cc.Button, nodeBeat: cc.Node, }, // LIFE-CYCLE CALLBACKS: onLoad () { this._lefttime = 10; this._grade = 0; this.nodeBeat.active = false; }, start () { this.nodeBeat.on(cc.Node.EventType.TOUCH_START, event => { this.nodeBeat.scale = 1.1; }); this.nodeBeat.on(cc.Node.EventType.TOUCH_END, event => { this.nodeBeat.scale = 1.0; this._grade++; this.txtGrade.string = `面长${this._grade}米`; }); }, // update (dt) {}, updateGrade(){ if(cc.sys.platform == cc.sys.WECHAT_GAME){ let max = cc.sys.localStorage.getItem('max_grade'); if(max != null && max { console.log('success', res); }, faile: res => {

cocos creator 学习笔记03

创建一个空白节点,再拖动一个子物体上去,要保证父物体的size小于子物体。前面name代表标签的名称,后面一定要有一个与他对应的标签结束,中间就填写包含起来的内容。All会返回路径上所以碰撞体的信息,all closest返回最近的点。中间紫色的就是屏幕,屏幕内的内容都是通过MainCamera渲染出来的。如果这两个都不勾选时,在不同的设备上可能会出现高或宽被裁剪的情况。any是返回一点随机的,closest是返回最近的一点的信息。可以拖动一个新的节点来当作此物体的父节点,替换掉原来的父节点。

2301_79022588的博客 636

CocosCreator小球发射线

CocosCreator 版本v2.0.1 , 项目源码 ,王者弹球弹球游戏的辅助发射线 , 根据正弦值计算出角度调整发射线。

避坑指南:你的VASP CI-NEB计算为什么不收敛?常见错误分析与解决思路

本文深入解析VASP CI-NEB计算不收敛的常见问题,提供从结构准备到参数设置的系统解决方案。针对过渡态计算中的能量曲线异常、中间图像偏离等典型问题,详细介绍了诊断方法和实用工具,帮助研究者高效解决CI-NEB收敛难题,提升计算效率。

weixin_29698641的博客 433

CocosCreater 教程(下)

CocosCreater 学习

L的博客 2948

Vivado 2018.3实战:用IDELAYE3和ISERDESE3搞定高速ADC数据采集(附仿真源码)

本文详细介绍了在Vivado 2018.3中使用Xilinx UltraScale架构的IDELAYE3和ISERDESE3原语实现高速ADC数据采集的实战方法。通过分析5GHz采样系统的时序挑战,提供从PCB布局到Vivado实现的完整解决方案,包括精密时序校准、多相位数据重组及系统级调试技巧,并附赠仿真源码助力工程师快速掌握高速数据采集技术。

weixin_30567225的博客 582

【Cocos入门】物理检测

CoCos中,物理检测也是物理系统的一部分,它不是用于检测物体的物理特性的,而是用来查询物体的(比如某个地方是否存在物理碰撞体)。其又分成:点检测、矩形检测和射线检测。点测试将测试是否有碰撞体会包含一个世界坐标系下的点,如果测试成功,则返回一个包含这个点的碰撞体。矩形测试将测试指定的一个世界坐标系下的矩形,如果一个碰撞体的包围盒与这个矩形有重叠部分,则这个碰撞体会被添加到返回列表中。射线测试用来检测给定的线段穿过那些碰撞体,我们还可以获取到碰撞体在线段穿过碰撞体的那个点的法线向量和其他一些有用的信息。

希望有志同道合的的朋友可以互相学习! 1300

SpringCloud2025+SpringBoot3.5.0+gateway+webflux子服务路由报503

本来昨天就应该也记录下,免得忘记的,但是有点晚了,酒没写,真的是被坑惨了。当然这也是追求最新的代价,也是对新技术、老知识点的重温。依赖更粒度让架构的知识面更高,需要非常清楚另外说不定是有新的负载均衡要出现了,就想当初loadbalancer取代Ribbon一样好了,真是坑了半夜,昨晚都没有写,今天才复盘,希望能帮到大家,让更多在坑里的技术人爬出来。

zwrlj527的专栏 1998

S32K344 Bootloader实战:一个按键实现从Boot到App的无缝跳转(附完整代码)

本文详细介绍了基于NXP S32K344微控制器的Bootloader开发实战,重点解析如何通过一个硬件按键实现从Boot到App的可靠跳转。内容涵盖内存分区规划、中断向量表重映射、外设初始状态管理等核心要素,并提供了完整的代码示例和调试技巧,适用于汽车电子和工业控制等高可靠性应用场景。

weixin_29192365的博客 308

Cocos Creator 3.6 PhysicsSystem2D.instance.raycast 射线检测 踩坑笔记 --报错,检测无结果返回。

首先这个射线检测实在难用,本来我是想用一个矩形检测一个node是否能通过,结果发现矩形检测没有设置角度的地方,也就是说,只能是正矩形,而不能是斜的。没办法,只能用两条射线检测了……

PMdoggy的博客 1449

Unity UGUI深度优化

Unity UGUI优化相关

不定时分享所学所得,包括游戏开发和其他收获! 2718

CocosCreator射线检测之范围检测

国际惯例先来上一组效果: 这样的操作可以提前预测物体是否会碰撞,并且描绘出射线路径 场景配置: 检测代码如下: constAIM_LINE_MAX_LENGTH=2440; const{ccclass,property}=cc._decorator; @ccclass exportdefaultclassMainextendscc.Component{ @property({type:c...

风云莫测的博客 3774

YOLOv8 改进涨点 | 模块即插即用 直接可用

在目标检测任务中,注意力机制能够帮助模型聚焦于图像中的关键区域,显著提升检测精度。。创建模块代码注册模块修改任务解析tasks.py创建YAML配置文件模块核心优势适用场景计算开销SOCA捕获二阶统计信息,增强通道间相关性需要精细特征区分的场景中等SK自适应多尺度核选择多尺度目标检测中等偏高显式特征聚集-分配机制全局上下文建模中等A2-Net双线性注意力,高效全局交互复杂场景理解中等偏高CrissCross线性复杂度全局上下文高分辨率输入,长距离依赖较低。

u012133341的博客 2258

PostgreSQL的学习心得和知识总结(八十二)|深入理解PostgreSQL数据库SQL语句的词法解析和语法解析流程

postgresql 词法解析语法解析流程

孤傲小二~阿沐的博客 5448

Cocos Creator 3.x 3D点击事件 - 射线检测

知识点 射线检测是什么? 射线检测是非常重要的功能,常常用来判断各种情况。其本质是对一条射线和另一个形状进行 相交性判断,如下图所示。 射线检测怎么使用? 构造射线 首先 引入 geometry 模块, import { geometry } from 'cc'; 然后 设置起点和方向,常见方法 一、通过 起点 + 方向,ray 的构造函数或静态接口 create import { geometry } from 'cc'; const { ray } = geometry; // 构造一条从(0

qq_14965517的博客 3545

DCNv4+YOLOv8:2024最新可变形卷积赋能目标检测,从原理到实战的科研级优化指南

从理解DCNv4“自适应变形卷积核”的核心思想,到亲手将其嵌入YOLOv8并验证在复杂场景的检测效果,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解目标检测中“特征自适应提取”的核心价值。现在就开始行动,相信你会在目标检测的“自适应特征提取”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入DCNv4后,YOLOv8在复杂场景下的检测精度提升3-5个百分点,尤其是小目标和遮挡目标的AP提升更为明显,而推理速度仅下降5%-10%(可通过模型量化进一步优化)。2024年最新推出的。

m0_64661770的博客 268

cocos creator 3D学习(五)射线---点击按钮

目录前言步骤在import里引入geometry定义一个射线在onload里面使用射线射线的函数最后 前言 在cocos creator 3D里,canvas的优先级在3D图层之前,那我们需要点击3D模型的某一处时,就要用到射线了 步骤 在import里引入geometry import { _decorator, Component, Node, Vec3, SkeletalAnimationComponent, macro,ColliderComponent,RigidBodyComponent,Aud

judykang123的博客 1739

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CocosCreator触摸事件处理:从基础到高级的交互设计教程

掌握CocosCreator触摸事件处理是创建出色游戏交互体验的关键技能。本教程将带你从基础概念到高级技巧,全面了解如何在CocosCreator中实现流畅的触摸交互设计。无论你是刚接触游戏开发的新手,还是想提升交互设计能力的开发者,这篇指南都能为你提供实用的解决方案和最佳实践。 ## 为什么触摸事件处理如此重要? 在移动游戏开发中,触摸事件是用户与游戏互动的主要方式。CocosCreator

gitblog_00952的博客 380

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CocosCreator之KUOKUO带你做物理切割(第一部分)

摘要 有趣的物理小游戏总能让小伙伴们爱不释手,而 CocosCreator 的内置物理引擎让其开发变得更加简单。今天 KUOKUO 就为大家带来物理切割,从零开始做出切割单个物体! 正文 使用版本 CocosCreator 版本 2.1.3 最终效果 层级管理 如图,在层级管理器中有 3 部分:画布,物理层,绘图层。其中画布只是作为触摸节点,绘图层用于绘制红线,物理层中放入物理刚体。脚本有三个...

kuokuo666的博客 3740

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

CocosCreator-3D 3D物体触摸移动(跟随移动)

版本:cocoscreator3.4.0 基本原理: 通过触摸屏幕上的点生成一个射线,通过物理射线检测,获得是否点击到物体 通过射线的检测结果(raycastResults)获得碰撞点(hitPoint) 设置物体的x,z为碰撞点的x,y即可 import { _decorator, Component, Node, Camera, geometry, input, Input, EventTouch, PhysicsSystem, math, clamp, Vec3 } from 'cc'; .

u010080775的博客 3683

大家要的瞄准线教程找到了,附github源码!

最近有小伙伴问我瞄准线遇到各种形状该怎么处理?如何实现反复横跳的瞄准线?最近刚好在《Cocos Creator游戏开发实战》中看到物理系统有一个射线检测,于是,基于这个射线检测,写了一个反复横跳的瞄准线效果。一起往下看吧!文章底部获取完整项目! 国际惯例,先上最终效果! 在讲解之前我们需要一些向量的知识,简单的介绍一些吧! 向量的加法,OA + AB =OB ...

嘿嘿 1078

CocosCreator的敌人视野扇形因遮掩物体任意变形的实现(画线、填充)

首先定义一个cocosCreator的cc.Graphics组件,作为敌人视野的渲染画线和填充组件: //画线组件 g:cc.Graphics; //敌人视野半径的角度大小 emenyAngle:number=45; //巡逻半径的大小 distance:number=450; 然后在update或者其它定时器每帧频率里边写下渲染画线的方法: update(){ if(this.gnull){ this.g=this.node.addComponent(cc.Graphics); } this.g.clea

MLHuangGan的博客 1985

两个向量的点乘和叉乘怎么算_反复横跳的瞄准线! 从向量计算说起! 基于射线检测的实现! Cocos Creator!...

最近有小伙伴问我瞄准线遇到各种形状该怎么处理?如何实现反复横跳的瞄准线?最近刚好在《Cocos Creator游戏开发实战》中看到物理系统有一个射线检测,于是,基于这个射线检测,写了一个反复横跳的瞄准线效果。一起往下看吧!文章底部获取完整项目!国际惯例,先上最终效果!在讲解之前我们需要一些向量的知识,简单的介绍一些吧!向量的加法,OA + AB = OB向量的点乘,表示一个向量在另一个向量上的投影...

weixin_32424555的博客 619
上一篇: [CocosCreator]性能优化
下一篇: TypeScript类型判断typeof,instanceof,以及as断言
iningwei
博客等级 码龄10年 1999粉丝 327原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iningwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值