blob: 3b4df18bf0c3b9325b3629fe2394a23649f7472a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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);
}
}
}
|