diff options
Diffstat (limited to 'AlienSurvival/Assets/Scripts/Test/TestAstro.cs')
-rw-r--r-- | AlienSurvival/Assets/Scripts/Test/TestAstro.cs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/AlienSurvival/Assets/Scripts/Test/TestAstro.cs b/AlienSurvival/Assets/Scripts/Test/TestAstro.cs new file mode 100644 index 0000000..3b4df18 --- /dev/null +++ b/AlienSurvival/Assets/Scripts/Test/TestAstro.cs @@ -0,0 +1,77 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TestAstro : MonoBehaviour +{ + [SerializeField] private Transform m_Camera; + + [SerializeField] private float m_Speed; + + [SerializeField] private SpriteRenderer m_Shadow; + + private SpriteRenderer m_SpriteRenderer; + private TestFakeHeight m_FakeHeight; + + + + void Start() + { + m_SpriteRenderer = GetComponent<SpriteRenderer>(); + m_FakeHeight = GetComponent<TestFakeHeight>(); + } + + void Update() + { + float x = Input.GetAxisRaw("Horizontal"); + float y = Input.GetAxisRaw("Vertical"); + + Vector3 targetZoom = Vector3.one; + + if(x != 0 || y != 0) + { + targetZoom = new Vector3(1f, 1f, 1); + + Vector2 direction = new Vector2(x, y).normalized; + + Vector3 position = transform.position; + position.x += direction.x * m_Speed * Time.deltaTime; + position.y += direction.y * m_Speed * Time.deltaTime; + + transform.position = position; + + if (x > 0) + { + m_SpriteRenderer.flipX = false; + m_Shadow.flipX = false; + } + else if (x < 0) + { + m_SpriteRenderer.flipX = true; + m_Shadow.flipX = true; + } + } + else + { + targetZoom = new Vector3(0.5f, 0.5f, 1); + } + + Vector3 zoom = m_Camera.localScale; + m_Camera.localScale = Vector3.Lerp(zoom, targetZoom, Time.deltaTime); + + CameraFollow(); + } + + void CameraFollow() + { + Vector3 pos = m_Camera.position; + pos.x = m_FakeHeight.x; + pos.y = m_FakeHeight.y; + + if(Vector3.Distance(pos, m_Camera.position) > 0.1f) + { + m_Camera.position = Vector3.Lerp(m_Camera.position, pos, 3 * Time.deltaTime); + } + + } +} |