Cocos Creator入门教程之物体朝向及运动的知识

一、方向与角度转换涉及的知识

1. Math.sin()函数返回一个值的正弦值,返回值的范围在(-1,1)。

//X表示一个以弧度为单位的数值
   
Math.sin(X)

2. Math.cos()函数返回一个值的余弦值。

//X表示一个以弧度为单位的数值
   
Math.cos(X)

3. 弧度与角度的转换:弧度=2*角度/360*PI

//旋转角度转化为弧度
let angle=this.node.rotation*2/360*Math.PI;

4. signAngle()函数表示带方向的夹角的弧度。

//计算夹角弧度(cc.v2(0,1)表示物体基于Y轴方向)
  let angle2=dir.signAngle(cc.v2(0,1))

   angle()函数只是表示计算夹角的弧度。

5. 弧度与欧拉角的转换:欧拉角=弧度/180*PI

//弧度转换成欧拉角
let olj=angle2/Math.PI*180;

二、物体根据朝向方向移动

控制物体的旋转角度就能实现任意朝向的移动。

moveSpeed:number=100;

    update (dt:number) 
    {
        //旋转角度转化为弧度
         let angle=this.node.rotation*2/360*Math.PI;
         //计算基于Y轴的方向向量
         let dir=cc.v2(Math.sin(angle),Math.cos(angle));
         //方向向量进行单位化
         dir.normalizeSelf();
         //根据方向向量移动位置
         this.node.x += dt * dir.x * this.moveSpeed;
         this.node.y += dt * dir.y * this.moveSpeed;
    }

三、一个物体朝向另一个物体移动

moveSpeed:number=100;

    @property(cc.Node)
    otherNode:cc.Node=null;

    start()
    {
        this.lookAtObject()
    }

    update (dt:number) 
    {
        //旋转角度转化为弧度
         let angle=this.node.rotation*2/360*Math.PI;
         //计算基于Y轴的方向向量
         let dir=cc.v2(Math.sin(angle),Math.cos(angle));
         //方向向量进行单位化
         dir.normalizeSelf();
         //根据方向向量移动位置
         this.node.x += dt * dir.x * this.moveSpeed;
         this.node.y += dt * dir.y * this.moveSpeed;
    }
    //朝向函数
    public lookAtObject()
    {
        //计算朝向
        let orientationX=this.otherNode.x-this.node.x;
        let orientationY=this.otherNode.y-this.node.y;
        let dir=cc.v2(orientationX,orientationY);
        //计算夹角弧度(cc.v2(0,1)表示物体基于Y轴方向)
        let angle2=dir.signAngle(cc.v2(0,1))
        //弧度转换成欧拉角
        let olj=angle2/Math.PI*180;
        //物体朝向
        this.node.rotation=olj;
    }
}

 

你可能感兴趣的:(Cocos,Creator)