summaryrefslogtreecommitdiff
path: root/marching/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'marching/Assets/Scripts')
-rw-r--r--marching/Assets/Scripts/EntityBase.cs49
-rw-r--r--marching/Assets/Scripts/EntityBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/Items.meta8
-rw-r--r--marching/Assets/Scripts/Items/ItemBase.cs22
-rw-r--r--marching/Assets/Scripts/Items/ItemBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/ProjectileBase.cs18
-rw-r--r--marching/Assets/Scripts/ProjectileBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/Projectiles.meta8
-rw-r--r--marching/Assets/Scripts/Projectiles/BladeScript.cs41
-rw-r--r--marching/Assets/Scripts/Projectiles/BladeScript.cs.meta11
-rw-r--r--marching/Assets/Scripts/Unit.meta8
-rw-r--r--marching/Assets/Scripts/Unit/Characters.meta8
-rw-r--r--marching/Assets/Scripts/Unit/Characters/Samurai.meta8
-rw-r--r--marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs155
-rw-r--r--marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs.meta11
-rw-r--r--marching/Assets/Scripts/Unit/UnitBase.cs22
-rw-r--r--marching/Assets/Scripts/Unit/UnitBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/VampireScript.cs10
-rw-r--r--marching/Assets/Scripts/WaypointScript.cs35
-rw-r--r--marching/Assets/Scripts/WaypointScript.cs.meta11
20 files changed, 465 insertions, 4 deletions
diff --git a/marching/Assets/Scripts/EntityBase.cs b/marching/Assets/Scripts/EntityBase.cs
new file mode 100644
index 0000000..c1beb42
--- /dev/null
+++ b/marching/Assets/Scripts/EntityBase.cs
@@ -0,0 +1,49 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EntityBase : MonoBehaviour
+{
+ public SpriteRenderer m_Shadow;
+
+ private SpriteRenderer m_SpriteRenderer;
+
+ protected virtual void Awake()
+ {
+ m_SpriteRenderer = GetComponent<SpriteRenderer>();
+
+ GameObject shadow = new GameObject("shadow");
+ shadow.transform.parent = transform;
+ shadow.transform.localPosition = Vector3.zero;
+ shadow.transform.localScale = new Vector3(1, 0.5f, 1);
+ SpriteRenderer sr = shadow.AddComponent<SpriteRenderer>();
+ sr.material = new Material(Shader.Find("UI/SpriteSkewShader"));
+ sr.material.SetFloat("_HorizontalSkew", 0.4f);
+ sr.color = new Color(0, 0, 0, 0.4f);
+ sr.sortingOrder = short.MinValue;
+ m_Shadow = sr;
+ }
+
+ protected virtual void Update()
+ {
+ if (m_SpriteRenderer != null)
+ {
+ float y = transform.position.y;
+ int order = -(int)(y * 100);
+ if (order != m_SpriteRenderer.sortingOrder)
+ {
+ m_SpriteRenderer.sortingOrder = order;
+ }
+ }
+ }
+
+ protected virtual void LateUpdate()
+ {
+ if (m_Shadow != null)
+ {
+ m_Shadow.sprite = m_SpriteRenderer.sprite;
+ m_Shadow.flipX = m_SpriteRenderer.flipX;
+ }
+ }
+
+}
diff --git a/marching/Assets/Scripts/EntityBase.cs.meta b/marching/Assets/Scripts/EntityBase.cs.meta
new file mode 100644
index 0000000..bea4770
--- /dev/null
+++ b/marching/Assets/Scripts/EntityBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1cba851b7bdff1446b87fa2ce86ea799
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Items.meta b/marching/Assets/Scripts/Items.meta
new file mode 100644
index 0000000..240e859
--- /dev/null
+++ b/marching/Assets/Scripts/Items.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9dd7c45b04c11bb41bb362f89e93c0d5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Items/ItemBase.cs b/marching/Assets/Scripts/Items/ItemBase.cs
new file mode 100644
index 0000000..98f3c2a
--- /dev/null
+++ b/marching/Assets/Scripts/Items/ItemBase.cs
@@ -0,0 +1,22 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ItemBase : EntityBase
+{
+ protected virtual void Awake()
+ {
+ base.Awake();
+ }
+
+ protected virtual void Update()
+ {
+ base.Update();
+ }
+
+ protected virtual void LateUpdate()
+ {
+ base.LateUpdate();
+ }
+
+}
diff --git a/marching/Assets/Scripts/Items/ItemBase.cs.meta b/marching/Assets/Scripts/Items/ItemBase.cs.meta
new file mode 100644
index 0000000..0893db8
--- /dev/null
+++ b/marching/Assets/Scripts/Items/ItemBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cbf68306c31144f44a34335479353692
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/ProjectileBase.cs b/marching/Assets/Scripts/ProjectileBase.cs
new file mode 100644
index 0000000..5721c58
--- /dev/null
+++ b/marching/Assets/Scripts/ProjectileBase.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ProjectileBase : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/marching/Assets/Scripts/ProjectileBase.cs.meta b/marching/Assets/Scripts/ProjectileBase.cs.meta
new file mode 100644
index 0000000..92b6448
--- /dev/null
+++ b/marching/Assets/Scripts/ProjectileBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 74df58658557802489ed9f3e15541e6b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Projectiles.meta b/marching/Assets/Scripts/Projectiles.meta
new file mode 100644
index 0000000..20b505d
--- /dev/null
+++ b/marching/Assets/Scripts/Projectiles.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 16b65d64de8db1740a3397412410487c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Projectiles/BladeScript.cs b/marching/Assets/Scripts/Projectiles/BladeScript.cs
new file mode 100644
index 0000000..f5f613c
--- /dev/null
+++ b/marching/Assets/Scripts/Projectiles/BladeScript.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BladeScript : ProjectileBase
+{
+ [NonSerialized] public float life;
+
+
+ private SpriteRenderer sr
+ {
+ get
+ {
+ return this.gameObject.GetComponent<SpriteRenderer>();
+ }
+ }
+
+ public void Start()
+ {
+ Invoke("DestroySelf", life);
+ }
+
+ void DestroySelf()
+ {
+ Destroy(this.gameObject);
+ }
+
+ public void Update()
+ {
+ Color c = sr.color;
+ c.a *= 0.99f;
+ sr.color = c;
+ }
+
+ public void SetFlip(bool flip)
+ {
+ sr.flipX = flip;
+ }
+
+}
diff --git a/marching/Assets/Scripts/Projectiles/BladeScript.cs.meta b/marching/Assets/Scripts/Projectiles/BladeScript.cs.meta
new file mode 100644
index 0000000..11f43ed
--- /dev/null
+++ b/marching/Assets/Scripts/Projectiles/BladeScript.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a4c0b0adacc6e3148aab9ce0f1c0cca1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Unit.meta b/marching/Assets/Scripts/Unit.meta
new file mode 100644
index 0000000..27611bc
--- /dev/null
+++ b/marching/Assets/Scripts/Unit.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f7d86c9dd803498419020ec35ef24b6a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Unit/Characters.meta b/marching/Assets/Scripts/Unit/Characters.meta
new file mode 100644
index 0000000..3fdf467
--- /dev/null
+++ b/marching/Assets/Scripts/Unit/Characters.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8cf6de6efdd45544187236b496a10b60
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Unit/Characters/Samurai.meta b/marching/Assets/Scripts/Unit/Characters/Samurai.meta
new file mode 100644
index 0000000..0900ff5
--- /dev/null
+++ b/marching/Assets/Scripts/Unit/Characters/Samurai.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0a0f49eb0a90f474e8dc4f85f08e20fd
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs
new file mode 100644
index 0000000..29b182c
--- /dev/null
+++ b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs
@@ -0,0 +1,155 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using static UnityEditor.PlayerSettings;
+
+namespace MH
+{
+
+ public class SamuraiScript : UnitBase
+ {
+ [SerializeField] private WaypointScript m_Waypoint;
+ [SerializeField] private float m_Speed;
+ [SerializeField] private BladeScript m_Blade;
+
+ 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;
+
+ void Start()
+ {
+ m_Camera = Camera.main;
+ m_Moving = true;
+ m_Sprite = GetComponent<SpriteRenderer>();
+ m_TimeSinceLastMove = float.MaxValue;
+ StartCoroutine(CoAttack(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 = 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
+ {
+ BladeScript blade = Instantiate(m_Blade);
+ blade.life = 0.5f;
+ blade.transform.position = transform.position + new Vector3(1 * fac, 1f, 0);
+ blade.SetFlip(fac == -1);
+ fac *= -1;
+ yield return new WaitForSeconds(interval);
+ }
+ }
+ }
+
+ }
+
+}
diff --git a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs.meta b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs.meta
new file mode 100644
index 0000000..9f84435
--- /dev/null
+++ b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: aebd1bb3a775f7748832acc6222117cb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Unit/UnitBase.cs b/marching/Assets/Scripts/Unit/UnitBase.cs
new file mode 100644
index 0000000..9c5f0d0
--- /dev/null
+++ b/marching/Assets/Scripts/Unit/UnitBase.cs
@@ -0,0 +1,22 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UnitBase : EntityBase
+{
+ protected virtual void Awake()
+ {
+ base.Awake();
+ }
+
+ protected virtual void Update()
+ {
+ base.Update();
+ }
+
+ protected virtual void LateUpdate()
+ {
+ base.LateUpdate();
+ }
+
+}
diff --git a/marching/Assets/Scripts/Unit/UnitBase.cs.meta b/marching/Assets/Scripts/Unit/UnitBase.cs.meta
new file mode 100644
index 0000000..8552c51
--- /dev/null
+++ b/marching/Assets/Scripts/Unit/UnitBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fab9edfa070295e4b832f046b18f279b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/VampireScript.cs b/marching/Assets/Scripts/VampireScript.cs
index 87fdd7a..2f993d3 100644
--- a/marching/Assets/Scripts/VampireScript.cs
+++ b/marching/Assets/Scripts/VampireScript.cs
@@ -5,7 +5,7 @@ using UnityEngine;
namespace MH
{
- public class VampireScript : MonoBehaviour
+ public class VampireScript : UnitBase
{
public Camera m_Camera;
@@ -13,21 +13,23 @@ namespace MH
private bool m_Moving;
- // Start is called before the first frame update
void Start()
{
m_Moving = true;
m_Sprite = GetComponent<SpriteRenderer>();
}
- // Update is called once per frame
- void Update()
+ protected override void Update()
{
+ base.Update();
+
if (Input.GetMouseButtonDown(1))
{
m_Moving = !m_Moving;
}
+ GetComponent<Animator>().speed = m_Moving ? 1 : 0;
+
if (!m_Moving)
return;
diff --git a/marching/Assets/Scripts/WaypointScript.cs b/marching/Assets/Scripts/WaypointScript.cs
new file mode 100644
index 0000000..1012bc2
--- /dev/null
+++ b/marching/Assets/Scripts/WaypointScript.cs
@@ -0,0 +1,35 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class WaypointScript : MonoBehaviour
+{
+ public float life;
+
+ // Start is called before the first frame update
+ void Start()
+ {
+ StartCoroutine(CoUpdate());
+ }
+
+
+ IEnumerator CoUpdate() {
+ float t = 0;
+ while (true)
+ {
+ Color c = this.gameObject.GetComponent<SpriteRenderer>().color;
+ c.a *= 0.99f;
+ this.gameObject.GetComponent<SpriteRenderer>().color = c;
+ this.transform.localScale *= 1.002f;
+ t+= Time.deltaTime;
+ if(t > life)
+ {
+ Destroy(this.gameObject);
+ yield break;
+ }
+ yield return null;
+ }
+ }
+
+
+}
diff --git a/marching/Assets/Scripts/WaypointScript.cs.meta b/marching/Assets/Scripts/WaypointScript.cs.meta
new file mode 100644
index 0000000..f58f668
--- /dev/null
+++ b/marching/Assets/Scripts/WaypointScript.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f30c6188a9717a44a8a44c46bfd45a1a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: