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(); m_FakeHeight = GetComponent(); } 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); } } }