如图 想求敌机对主角旋转的角度,该怎么做呀
两点的坐标求出向量,不就知道了吗
然后怎么变成角度值呀 我刚开始学很多方法不会用
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;
}
1赞
你确定rotation传的是角度而不是Quat?
他发的是2.x版本的
misc.radiansToDegrees(v2(0,-1).signAngle(v2(vec.x, vec.y)));
一行代码搞定
let rad = Vec2.UNIT_X.signAngle(dir);
let deg = misc.radiansToDegrees(rad);
if (deg < -90 || deg >= 90) {
deg -= 180;
}
this.node.angle = deg;
