// 获取节点的当前旋转角度
let angle = this.node.getChildByName('node').angle;
// 将角度转换为弧度,因为Math函数需要使用弧度
let radians = misc.degreesToRadians(angle);
// 计算朝向向量,使用 cosine 和 sine 函数
let direction = v3(Math.cos(radians), Math.sin(radians));
// 计算移动距离
let moveDistance = direction.multiplyScalar(50 * deltaTime);
// 更新节点的位置
this.node.getChildByName('node').setPosition(this.node.getChildByName('node').position.add(moveDistance));
2赞
连个线,数学公式就行吧, 或者向量乘法
不错不错,感谢分享。
我也分享一下我的做法,集思广益。
1、方向移动
- 终点减起点,获得向量 dir = p2 - p1
- 单位化向量,得到方向 dir = dir.normalize();
- 用方向向量做位移 ox = dir.x * dt * speed; oy = dir.y * dt * speed;
2、节点旋转
let angle = atan2(dir.y,dir.x); 计算出角度, 设置给node 的rotation.z 就可以修改物体旋转
5赞
麒麟子大佬好强,比我的简单 
根据角度获取方向向量。
首先angle转radius,
假设图片默认的朝上↑,旋转90度,那么可以
const dir = Vec2(0, 1).rotate(PI / 2).normalize(),即可得出方向向量
dis = Vec2(dir.x * speed + pos.x, dir.y * speed + speed)
逆时针方向
jojo老师好强 
说下我的思路,2d游戏一般设置forward就行了 
貌似只有3d设置 forward 才行
2d的z轴是指向屏幕内的,而且2d的旋转是绕着z轴旋转,
2d的forward一定是(0, 0, 1)
改forward的话,会导致绕着其他轴向旋转,图片都显示不全了
可以自行试一下