CocosCreator物理系统注意事项分享

CocosCrator物理系统注意事项

cocosCreator 物理系统知识梳理(部分)


如有独特见解,欢迎留言。


前言

使用物理系统基本注意事项

相信很多对于物理系统不熟悉的同学,肯定都很苦恼,为什么代码写上去了,却没有想要的效果,看看下面文章,希望对你有所帮助!


提示:以下是本篇文章正文内容,下面案例可供参考

常见问题一:为什么我用了物理碰撞组件,却没有反应?

检查脚本是否开启了物理系统(脚本要挂载到场景任意节点下,否则脚本都没有执行,怎么会有效?)

onLoad() {
   // 开启物理系统(必须写在onLoad方法内,否则会无效)
   cc.director.getPhysicsManager().enabled = true;
}

常见为题二:碰撞回调不知道如何调用?没反应?处理细节?

首先要去实现如下碰撞回调方法:

代码如下(示例):

const { ccclass, property } = cc._decorator;

@ccclass
export default class Example extends cc.Component {

    // 只在两个碰撞体开始接触时被调用一次
    onBeginContact (contact, selfCollider, otherCollider) {
    }

    // 只在两个碰撞体结束接触时被调用一次
    onEndContact (contact, selfCollider, otherCollider) {
    }

    // 每次将要处理碰撞体接触逻辑时被调用
    onPreSolve(contact, selfCollider, otherCollider) {
    }

    // 每次处理完碰撞体接触逻辑时被调用
    onPostSolve (contact, selfCollider, otherCollider) {
    }
    
    // selfCollider:指的是回调脚本的节点上的碰撞体
	// otherCollider:指的是发生碰撞的另一个碰撞体
	// concat:指的是最主要的碰撞信息

	// 如果需要查看这三个参数具体包含什么,可以在代码里面打印,这里就不细说了。
}

注意:这个脚本一定要挂载到刚体节点上,否则会无效!
友情链接:官方文档(看完就会)

常见问题三:修改碰撞体参数无效?卡死?

修改碰撞体参数时,一定要调用碰撞体的apply(),否则就会出现修改无效。
代码如下(以圆形碰撞体为示例):

	/**
     * 修改信息
     */
    modifyInformation() {
        /* 偏移量 */
        this.node.getComponent(cc.PhysicsCircleCollider).offset = cc.v2(10, 10);
        
        /* 密度 */
        this.node.getComponent(cc.PhysicsCircleCollider).density = 100;
        
        /* 摩擦系数 */
        this.node.getComponent(cc.PhysicsCircleCollider).friction = 0.5;
        
        /* 是否取消碰撞效果 */
        this.node.getComponent(cc.PhysicsCircleCollider).sensor = true;
        
        /* 弹性系数 */
        this.node.getComponent(cc.PhysicsCircleCollider).restitution = 10;

        /* 半径 */
        this.node.getComponent(cc.PhysicsCircleCollider).radius = 100;

        /* 最重要的一步,一定要应用!!! */
        this.node.getComponent(cc.PhysicsCircleCollider).apply();
    }

对于卡死的情况,不要在碰撞回调里面修改、应用参数,否则会卡死。


常见问题四:刚体穿透!

相信刚开始解除物理系统的同学都被这个问题折磨,疯狂百度,下面来看看常用的解决办法吧。

1.不要直接操作刚体进行位移(例如直接设置刚体的位置,或者设置x、y,这样很容易造成刚体穿透)。
2.尽量利用刚体自带的设置速度或者扭矩。
3.开启刚体防穿透的bullet属性。
4.代码中自己做控制,防止穿透情况发生。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《划线卡车》是一个基于cocos creator 2.2.2开发的物理游戏,玩家需要控制卡车在各种障碍物之间划线,以完成关卡目标。 源码中主要包含以下几个部分: 1. 游戏界面:游戏界面包括背景、卡车、障碍物等元素的布局和渲染。通过cocos creator的场景编辑器可以快速创建游戏界面,并进行相应的设置。 2. 物理引擎:利用cocos creator内置的物理引擎,为卡车和障碍物之间的互动提供支持。通过设置物体的质量、形状、碰撞检测等属性,实现真实的物理效果。 3. 划线逻辑:玩家通过触摸屏幕来划线,卡车会沿着划线的路径移动。划线逻辑需要处理触摸事件,并根据触摸点的位置计算划线路径,并使卡车按照路径移动。 4. 碰撞检测:游戏中需要检测卡车与障碍物之间的碰撞。当卡车与障碍物碰撞时,游戏失败。通过物理引擎提供的碰撞检测接口,可以方便地实现碰撞检测逻辑。 5. 过关条件判断:每一关都有特定的过关条件,例如在规定时间内完成划线,或者在最少次数内完成划线等。通过判断卡车移动的次数和时间来判断玩家是否完成过关条件。 通过阅读源码,可以学习到如何使用cocos creator进行游戏开发,了解物理引擎的基本原理和使用方法,熟悉游戏逻辑的编写和处理,提升自己的游戏开发能力。同时可以根据源码进行修改和优化,添加新的关卡和玩法,打造属于自己的版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值