cocos creator 3D学习(四)刚体

tech2023-11-21  52

目录

主动碰撞别人的刚体被碰撞的刚体碰撞函数inport引入定义碰撞函数碰撞事件触发事件 最后

主动碰撞别人的刚体

需要加两个组件,cc.BoxColliderComponent碰撞组件和cc.RigidBodyComponent刚体组件 记得把大小和阻尼设置一下,比如下图: 注:一定要两个都加,我试过隐藏任意一个,就不好使了

被碰撞的刚体

被碰撞的物体需要添加cc.BoxColliderComponent碰撞组件 记得将该组件Size大小改成需要的大小

如果是碰撞但可以穿过去的,就将IsTrigger点上,如果穿不过去,就不要点上

碰撞函数

inport引入

在js里的(最外层的)import里,需要写上ColliderComponent和RigidBodyComponent 如下:

import { _decorator, Component, Node, Vec3, SkeletalAnimationComponent, macro,ColliderComponent,RigidBodyComponent,AudioSourceComponent,CameraComponent, PhysicsSystem, SystemEvent,systemEvent,ICollisionEvent, ITriggerEvent ,CCInteger, geometry } from 'cc';

定义碰撞函数

在start函数里定义碰撞函数

public start () { let Collider = this.getComponent(ColliderComponent); //碰撞事件(碰到后穿不过去,多用于墙) Collider.on('onCollisionEnter', this.onCollision, this); //触发事件(碰到后能穿过去) Collider.on('onTriggerEnter', this.onTrigger, this); }

碰撞事件

碰到后穿不过去,多用于墙

private onCollision (event: ICollisionEvent) { //console.log(event); //获取到被碰撞的是什么,从而进行判断 console.log(event.otherCollider.node.name); //下面这段是假如碰到的刚体是node_qiantai,0.5s后node_qiantai消失 if( event.otherCollider.node.name == "node_qiantai" ){ this.scheduleOnce(function(){ this.node_qiantai.active = false; },0.5); } }

触发事件

碰撞后能穿过去,不过也会触发函数

private onTrigger (event: ITriggerEvent) { // 下面这段是假如碰到的刚体是node_audio1,node_wall_middle_out消失 if( event.otherCollider.node.name == "node_audio1"){ this.node_wall_middle_out.active = false; } }

最后

cocos creator 3D学习(一)载入的模型注意事项+画布上查看模型的鼠标键盘操作方法 cocos creator 3D学习(二)总是浮在屏幕最前面的操作按钮及其他 cocos creator 3D学习(三)一些常用的声明 cocos creator 3D学习(五)射线—点击按钮 cocos creator 3D学习(六)光照+阴影

最新回复(0)