diff options
author | chai <215380520@qq.com> | 2023-05-12 10:32:11 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-12 10:32:11 +0800 |
commit | 2fc9585797067730f28b03b0727bf05f9deed091 (patch) | |
tree | 8807e37b85ba922045eaa17ac445dd0a1d2d730c /marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs | |
parent | 2a1cd4fda8a4a8e649910d16b4dfa1ce7ae63543 (diff) |
+ worldline keepers
Diffstat (limited to 'marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs')
-rw-r--r-- | marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs deleted file mode 100644 index 966c3d0..0000000 --- a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs +++ /dev/null @@ -1,216 +0,0 @@ -using JetBrains.Annotations; -using System.Collections; -using System.Collections.Generic; -using Unity.VisualScripting; -using UnityEngine; -using UnityEngine.UIElements; - -namespace MH -{ - - public class UnitManager - { - public static UnitBase hero; - } - - public class SamuraiScript : UnitBase - { - [SerializeField] private WaypointScript m_Waypoint; - [SerializeField] private float m_Speed; - [SerializeField] private BladeScript m_Blade; - [SerializeField] private GameObject m_GroundBreak; - - private SpriteRenderer m_Sprite; - private bool m_Moving; - private Camera m_Camera; - private float m_TimeSinceLastMove; - private const float kKeepMovingThreshold = 0.4f; - private bool m_IsKeepMoving = false; - private Coroutine m_CoWaypoint; - private bool m_Attacking = false; - private bool m_IsKeepAttacking = false; - - private void Awake() - { - UnitManager.hero = this; - } - - void Start() - { - m_Camera = Camera.main; - m_Moving = true; - m_Sprite = GetComponent<SpriteRenderer>(); - m_TimeSinceLastMove = float.MaxValue; - StartCoroutine(CoAttack(1f)); - StartCoroutine(CoStrike(1f)); - } - - protected override void Update() - { - base.Update(); - Move(); - LookAt(); - } - - private void LookAt() - { - Vector3 pos = transform.position; - Vector3 camPos = m_Camera.transform.position; - camPos.x = pos.x; - camPos.y = pos.y; - m_Camera.transform.position = camPos; - } - - private void Move() - { - if(Input.GetMouseButtonDown(0)) - { - float dt = Time.time - m_TimeSinceLastMove; - if(dt > 0 && dt < kKeepMovingThreshold) - { - m_IsKeepMoving = true; - } - else - { - m_IsKeepMoving = false; - } - } - - m_Attacking = true;//Input.GetMouseButton(1); - - if (Input.GetMouseButton(0) || m_IsKeepMoving) - { - m_Moving = true; - - Vector3 mousePos = Input.mousePosition; - Vector3 mousePos3D = m_Camera.ScreenToWorldPoint(mousePos); - mousePos3D.z = 0; - - Vector3 pos = transform.position; - pos.z = 0; - - Vector3 toward = mousePos3D - pos; - toward.z = 0; - - if (toward.magnitude < 0.1f) - { - return; - } - - Vector3 dir = (mousePos3D - pos).normalized; - dir.z = 0; - - //pos.x += Time.deltaTime; - transform.position += dir * Time.deltaTime * m_Speed; - - m_Sprite.flipX = dir.x <= 0; - - if(m_CoWaypoint == null) - { - m_CoWaypoint = StartCoroutine(CoShowWaypoint(0.05f)); - } - } - else - { - if(m_CoWaypoint != null) - { - StopCoroutine(m_CoWaypoint); - m_CoWaypoint = null; - } - - m_Moving = false; - } - - GetComponent<Animator>().speed = m_Moving ? 1 : 0; - - if(Input.GetMouseButtonUp(0)) - { - m_TimeSinceLastMove = Time.time; - } - } - - IEnumerator CoShowWaypoint(float dt) - { - while (true) - { - WaypointScript waypoint = Instantiate(m_Waypoint) as WaypointScript; - Vector3 mousePos = Input.mousePosition; - Vector3 mousePos3D = m_Camera.ScreenToWorldPoint(mousePos); - mousePos3D.z = 0; - waypoint.transform.position = mousePos3D; - waypoint.life = 1; - yield return new WaitForSeconds(dt); - } - } - - IEnumerator CoAttack(float interval) - { - int fac = 1; - while (true) - { - if (!m_Attacking) - { - yield return null; - } - else - { - Vector3 mousePos = Input.mousePosition; - Vector3 mousePos3D = m_Camera.ScreenToWorldPoint(mousePos); - Vector2 dir = (mousePos3D.xy() - transform.position.xy()).normalized; - BladeScript blade = Instantiate(m_Blade); - blade.life = 5f; - blade.transform.position = transform.position + new Vector3(1 * fac, 1f, 0); - blade.SetFlip(fac == -1); - blade.dir = dir; - fac *= -1; - yield return new WaitForSeconds(interval); - } - } - } - - IEnumerator CoStrike(float interval) - { - int fac = 1; - while (true) - { - if (!m_Attacking) - { - yield return null; - } - else - { - yield return new WaitForSeconds(interval); - yield return new WaitForFixedUpdate(); - Strike(); - } - } - } - - private void Strike() - { - Vector3 pos = transform.position; - - float radius = 2; - - var go = Instantiate(m_GroundBreak); - go.transform.position = pos; - go.gameObject.SetActive(true); - go.transform.localScale *= radius / 1.7f; - - var colliders = PhysicsManager.Instance.CircleCast(ColliderType.Hurtbox, new Vector3(pos.x, pos.y, radius)); - if (colliders.Count != 0) - { - for(int i = 0; i < colliders.Count; ++i) - { - go = (colliders[i] as MonoBehaviour).gameObject; - if(go != this.gameObject) - { - GameObject.Destroy(go); - } - } - } - } - - } - -} |