mirror of
http://junepve.top:3000/chicrobot/CINC.git
synced 2026-10-30 00:31:29 +08:00
feat(control) 摇杆优化
This commit is contained in:
1 parent
344d61d0fb
commit
3863cfe1f6
3 files changed
+68
-13
No files matched your search
+33
-6
@@ -42,8 +42,8 @@ export class InputSystem {
|
||||
}
|
||||
|
||||
onPointerDown(pointer) {
|
||||
// 检查鼠标是否在小地图上,如果是则不处理框选
|
||||
if (this.isMouseOnMiniMap(pointer)) {
|
||||
// 检查鼠标是否在小地图或摇杆上,如果是则不处理框选
|
||||
if (this.isMouseOnMiniMap(pointer) || this.isMouseOnJoystick(pointer)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -79,8 +79,8 @@ export class InputSystem {
|
||||
}
|
||||
|
||||
onPointerMove(pointer) {
|
||||
// 检查鼠标是否在小地图上,如果是则不处理框选
|
||||
if (this.isMouseOnMiniMap(pointer)) {
|
||||
// 检查鼠标是否在小地图或摇杆上,如果是则不处理框选
|
||||
if (this.isMouseOnMiniMap(pointer) || this.isMouseOnJoystick(pointer)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -103,8 +103,8 @@ export class InputSystem {
|
||||
}
|
||||
|
||||
onPointerUp(pointer) {
|
||||
// 检查鼠标是否在小地图上,如果是则不处理框选
|
||||
if (this.isMouseOnMiniMap(pointer)) {
|
||||
// 检查鼠标是否在小地图或摇杆上,如果是则不处理框选
|
||||
if (this.isMouseOnMiniMap(pointer) || this.isMouseOnJoystick(pointer)) {
|
||||
this.selectionStart = null;
|
||||
return;
|
||||
}
|
||||
@@ -158,4 +158,31 @@ export class InputSystem {
|
||||
return mouseX >= mapLeft && mouseX <= mapRight &&
|
||||
mouseY >= mapTop && mouseY <= mapBottom;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查鼠标是否在摇杆上
|
||||
* @param {Phaser.Input.Pointer} pointer
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isMouseOnJoystick(pointer) {
|
||||
// 检查场景中是否有虚拟摇杆
|
||||
if (!this.scene.virtualJoystick) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const joystick = this.scene.virtualJoystick;
|
||||
const mouseX = pointer.x;
|
||||
const mouseY = pointer.y;
|
||||
|
||||
// 计算摇杆的边界(包括摇杆和操作区域)
|
||||
const joystickRadius = joystick.radius * 2; // 操作区域是摇杆半径的两倍
|
||||
const joystickLeft = joystick.centerX - joystickRadius;
|
||||
const joystickRight = joystick.centerX + joystickRadius;
|
||||
const joystickTop = joystick.centerY - joystickRadius;
|
||||
const joystickBottom = joystick.centerY + joystickRadius;
|
||||
|
||||
// 检查鼠标是否在摇杆边界内
|
||||
return mouseX >= joystickLeft && mouseX <= joystickRight &&
|
||||
mouseY >= joystickTop && mouseY <= joystickBottom;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user