栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Cocos Creator方向与角度转换

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Cocos Creator方向与角度转换

1、让一个对象朝着他的方向移动

cc.Node节点的rotation是一个角度,因此,我们为了实现这个目标,首先要根据rotation求出他的dir方向,就好办了。示例代码:

update(dt){
        //由于Math函数接受的是孤度,所以我们先节节点的旋转转化为弧度
        var angle = this.node.rotation / 180 * Math.PI;
        //合成基于 X正方向的方向向量
        var dir = cc.v2(Math.cos(angle),Math.sin(angle));
        //单位化向量
        dir.normalizeSelf();

        //根据方向向量移动位置
        var moveSpeed = 100;
        this.node.x += dt * dir.x * moveSpeed;
        this.node.y += dt * dir.y * moveSpeed;

}

2、让一个对象朝向另一个对象

通过高中数学我们可以知道, A到B的向量 = B点 - A点。 那我们只需要将目标对象的位置 - 自己的位置,即可得到方向向量。

方向向量转换为角度,需要认清一个隐含变量,就是这个角度的基准是 X 轴正方向。 使用向量来表示就是 (1,0)。

cc.Vec2提供了两个函数 cc.Vec2.angle和cc.Vec2.signAngle, 后者相比前者来说,后者产生的角度是有符号的,而前者会永远为正。 我们使用cc.Vec2.signAngle来将方向向量转换为弧度。 具体操作请看代码。

function lookAtObj(target){
        //计算出朝向
        var dx = target.x - this.node.x;
        var dy = target.y - this.node.y;
        var dir = cc.v2(dx,dy);

        //根据朝向计算出夹角弧度
        var angle = dir.signAngle(cc.v2(1,0));

        //将弧度转换为欧拉角
        var degree = angle / Math.PI * 180;

        //赋值给节点
        this.node.rotation = degree;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号