cocos 物理系统

1.设置组件: RegidBody

3种方式

Static:  不受重力和速度影响

Kinematic: 受到速度影响 不受重力影响

Dynamic(默认):受到重力和速度影响

 

 2.开启

   onLoad () {
        console.log("jinlail....")
           //  物理系统 需要手动开启
         cc.director.getPhysicsManager().enabled=true;
         console.log("jinlail....222222222222222")

     }

使用


    start () {
  // 物理系统  其实就是模拟显示世界  对于真实世界 就是  重力 + 速度 + 力 
          // 获得刚体
          let rbody=this.getComponent(cc.RigidBody);
          // 给他一个力
          //rbody.applyForce(cc.v2(1000,0),cc.v2(0,0),true);  // 三个参数  一个是哪个方向的  一个是作用点 一个是是否唤醒该刚体
          // rbody.applyForceToCenter(cc.v2(1000,0),true);     // 直接作用在中心点

        //给他一个速度
        //rbody.linearVelocity=cc.v2(50,0);
    }

    // update (dt) {}

    // 开始碰撞
    onBeginContact(contact,self,other){
          // 得到碰撞点
         let points= contact.getWorldManifold().points;
         console.log("points  "+points);
          //法线
         let normal= contact.getWorldManifold().normal;
         console.log("normal   "+normal);
    }

传感器

一个物体碰到传感器  会直接穿过去  但是会调用碰撞函数   

场景:

  当进入地图  会触发遇怪   可以用 

射线 


const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

   //方向
   dir=cc.v2(0,-1);
     onLoad () {
       // 开启物理引擎
       cc.director.getPhysicsManager().enabled=true;
     }

    start () {
      
    }

     update (dt) {
        // 前进
        this.node.x +=this.dir.x*100*dt;
        this.node.y +=this.dir.y*100*dt;
        // 前金的时候发出射线进行检测
        const a=this.node.y+this.dir.y*100
        
        console.log("this.node.getPosition()  "+this.node.getPosition())
        console.log("射线的y  "+a)
       // 发射 射线
       var ci= cc.director.getPhysicsManager().rayCast(cc.v2(this.node.position.x,this.node.position.y),cc.v2(this.node.x,this.node.y+this.dir.y*100),cc.RayCastType.Closest);
       if(ci.length>0){
              console.log(" 碰撞体 "+ci[0].collider.tag)
              console.log(" 碰撞位置 "+ci[0].point)
            //长度大于0 说明检测到了 
            this.dir.y*=-1;

           
       }

     }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值