CocosCreator使用物理引擎和回调

CocosCreator使用物理引擎和回调

大家好
我是个新人,博客可能写的不好希望大家见谅

一、开启物理引擎

COCOS物理引擎是默认关闭的,必须用代码打开
新建一个脚本

onLoad(){
        let manager=cc.director.getPhysicsManager();
        manager.enabled=true;//开启物理引擎
}

这是onload里面的代码
脚本挂到canvas节点上即可开启物理引擎

二、碰撞效果
首先必须开启物理引擎
必须在节点上添加RidBody(刚体)组件和物理组件中的碰撞组件这是重点
在这里插入图片描述

然后需要在RigidBody里面设置刚体类型
刚体类型: Static (静态)Kinematic (不妥外力)Dynamic (动态)和Animated (通过设置线性速度和角速度驱动)

常用的刚体就是Static (静态)和Dynamic (动态)如果想让一个节点向下坠落就用Dynamic (动态),如果想让一个节点当做地面就可以用Static (静态)

物理碰撞组件有四种,分别是Chain(链条形) Circle(圆形) Box(盒形) Polygon(多边形)根据需要去选择,不要把碰撞组件当成物理碰撞组件来用

三、碰撞回调
必须做好前两项开启物理引擎并且有碰撞效果,必须的必,不然无效

新建脚本来放碰撞回调

    onBeginContact(contact:cc.PhysicsContact,selfCollider:cc.PhysicsCollider,otherConllider:cc.PhysicsCollider):void{
        console.log("onBeginContact")
        //只在两个碰撞体开始接触时调用一次
    }

    onPreSolve(contact:cc.PhysicsContact,selfCollider:cc.PhysicsCollider,otherConllider:cc.PhysicsCollider):void{
        console.log("onPreSolve")
        //每次将要处理碰撞体接触逻辑时被调用
    }

    onPostSolve(contact:cc.PhysicsContact,selfCollider:cc.PhysicsCollider,otherConllider:cc.PhysicsCollider):void{
        console.log("onPostSolve")
        //每次处理完碰撞体接触逻辑时被调用
    }

    onEndContact(contact:cc.PhysicsContact,selfCollider:cc.PhysicsCollider,otherConllider:cc.PhysicsCollider):void{
        console.log("onEndContact")
        //只在两个碰撞体结束接触时被调用一次
    }

selfCollider 和 otherCollider 很容易理解,如名字所示,selfCollider 指的是回调脚本的节点上的碰撞体,ohterCollider 指的是发生碰撞的另一个碰撞体。(这句话来自官方文档)

在碰撞或者被碰撞的节点上挂上碰撞回调脚本,并且在RidBody(刚体)
组件上开启碰撞回调
在这里插入图片描述

这样就可以了

导致没成功的原因可能是把碰撞组件当成了物理的碰撞组件,或者忘了挂脚本。如果是碰撞回调没有反应的话可能是RigidBody组件没有打开碰撞回调

技术交流Q群:1130122408
都看到这里了就加一下群呗
进群可以免费领取本教程的Demo

谢谢你的观看

猜你喜欢

转载自blog.csdn.net/bcswkl_/article/details/107933224
今日推荐