diff options
author | chai <chaifix@163.com> | 2022-04-25 14:38:07 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-04-25 14:38:07 +0800 |
commit | b1b0925ee2acf37639c3d211351d74e957c4d134 (patch) | |
tree | e7139984b8ac250a97f2148c47b11d2763d3fc3d /SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs | |
parent | 7eb9351d905ddf6316fd6b177fff967fbac6fc94 (diff) |
* lock aim
Diffstat (limited to 'SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs')
-rw-r--r-- | SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs | 58 |
1 files changed, 42 insertions, 16 deletions
diff --git a/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs b/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs index 57bd46f..e4e3879 100644 --- a/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs +++ b/SurvivalTest/Assets/Scripts/Test/TestPeaceMaker.cs @@ -72,9 +72,13 @@ public class TestPeaceMaker : CrewScript private Vector3 m_PreMouse; private Vector2 m_AimDirection; + private Vector2 m_MoveDirection; private Vector3 m_TargetZoom; + // 锁定瞄准,以移动方向为准 + private bool m_LockAim; + private enum ControlMode { Mouse, @@ -99,6 +103,8 @@ public class TestPeaceMaker : CrewScript void Update() { + LockAim(); + bool isMove = Move(); SetAim(); @@ -110,6 +116,14 @@ public class TestPeaceMaker : CrewScript CameraZoom(isFire); } + void LockAim() + { + if(Input.GetButtonDown("LockAim")) + { + m_LockAim = !m_LockAim; + } + } + void CameraZoom(bool zout) { if(zout) @@ -147,6 +161,8 @@ public class TestPeaceMaker : CrewScript { Vector2 direction = new Vector2(x, y).normalized; + m_MoveDirection = direction; + Vector3 position = m_Coord.position; position.x += direction.x * m_Speed * Time.deltaTime; position.y += direction.y * m_Speed * Time.deltaTime; @@ -170,6 +186,9 @@ public class TestPeaceMaker : CrewScript void SetAim() { + Vector2 dir = Vector2.zero; + Vector2 centrePos = m_Centre.position; + float xAxis = Input.GetAxisRaw("AimHorizontal"); float yAxis = Input.GetAxisRaw("AimVertical"); @@ -178,28 +197,35 @@ public class TestPeaceMaker : CrewScript bool bMouse = (Input.mousePosition - m_PreMouse).magnitude > 0.01f; m_PreMouse = Input.mousePosition; - if(bJoytick) - { - m_ControlMode = ControlMode.Joystick; - } - if(bMouse) - { - m_ControlMode = ControlMode.Mouse; - } - - Vector2 centrePos = m_Centre.position; - Vector2 dir = Vector2.zero; - if (m_ControlMode == ControlMode.Mouse) + if (m_LockAim && !bJoytick && !bMouse) { - Vector2 camPos = GetCameraPosition(); - dir = (camPos - centrePos).normalized; + dir = m_MoveDirection; } else { - dir = new Vector2(xAxis, -yAxis).normalized; + m_LockAim = false; + + if (bJoytick) + { + m_ControlMode = ControlMode.Joystick; + } + if (bMouse) + { + m_ControlMode = ControlMode.Mouse; + } + + if (m_ControlMode == ControlMode.Mouse) + { + Vector2 camPos = GetCameraPosition(); + dir = (camPos - centrePos).normalized; + } + else + { + dir = new Vector2(xAxis, -yAxis).normalized; + } } - if(dir.magnitude > 0) + if (dir.magnitude > 0) { m_AimDirection = dir; Vector2 arrowPos = centrePos + m_ArrowRadius * m_AimDirection; |