实现步骤:
1:设置遥感Bar最大可移动半径 Radius
2:监听手指触碰
3:监听手指移动距离
4:将手指移动的当前世界坐标转为本地坐标(即相对于父节点的坐标)
5:将本地坐标转为向量矢量进行归一化处理得到长度为1的的向量 machineArrow
6:使用math.clamp计算视图上Bar移动的距离
7:使用归一化向量与视图上Bar移动的距离计算Bar在视图上的坐标
onTouchMove(touchEvent: EventTouch) {
// 获取摇杆在 UI 的位置
let x = touchEvent.touch.getUILocationX();
let y = touchEvent.touch.getUILocationY();
let worldPosition = new Vec3(x, y, 0);
let localPosition = v3();
// 转化摇杆的位置到本地坐标
this.joyStickBg.node.inverseTransformPoint(localPosition, worldPosition);
let thumbnailPosition = v3();
let len = localPosition.length();
//归一化
localPosition.normalize();
Vec3.scaleAndAdd(thumbnailPosition, v3(), localPosition, math.clamp(len, 0, this.radius));
this.thumbnail.node.setPosition(thumbnailPosition);
}