<Test_SunnyLand>짬뿌
Unity/수업내용 2019. 5. 7. 18:151 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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Test_SunnyLand : MonoBehaviour { #region 캐릭터 컨트롤 맴버 변수 public GameObject player; public Button btnIdle, btnRun, btnJump; public float jumpPower; private Animator anim; private Coroutine routine; private string currentAnim; //스위치 private bool onJumpMax; #endregion #region 맵 컨트롤 맴버 변수 public Transform[] arrBackGround; public Transform[] arrGround; public Transform[] arrTree; [Range(1, 5)] public float inGameSpeed; public float dir; #endregion private void Awake() { this.anim = this.player.GetComponent<Animator>(); } private void Start() { btnIdle.onClick.AddListener(() => { StopAllCoroutines(); this.Idle(); }); btnRun.onClick.AddListener(() => { this.Run(); this.BGLoop(); this.GroundLoop(); this.TreeMove(); }); btnJump.onClick.AddListener(() => { this.Jump(); }); } #region 캐릭터 컨트롤 private void Idle() { if (this.routine != null) { StopCoroutine(routine); } this.routine = StartCoroutine(this.IdleImpl()); } private void Run() { if (this.routine != null) { StopCoroutine(routine); } this.routine = StartCoroutine(this.RunImpl()); } private void Jump() { StartCoroutine(this.JumpImpl()); StartCoroutine(this.JumpPosImpl()); } private IEnumerator IdleImpl() { Debug.Log("아이들"); this.anim.Play("player_idle"); while (true) { yield return null; } } private IEnumerator RunImpl() { Debug.Log("런"); this.anim.Play("player_run"); while (true) { yield return null; } } private IEnumerator JumpImpl() { if (this.anim.GetCurrentAnimatorStateInfo(0).IsName("player_idle")) { this.currentAnim = "player_idle"; } else if (this.anim.GetCurrentAnimatorStateInfo(0).IsName("player_run")) { this.currentAnim = "player_run"; } Debug.Log("쩜"); this.anim.Play("player_jump"); if (this.currentAnim == "player_idle") { //아이들일땐 제자리 쩜 yield return new WaitForSeconds(0.5f); this.anim.Play("player_idle"); } else if (this.currentAnim == "player_run") { //아닐땐 달리면서 쩜? yield return new WaitForSeconds(0.5f); this.anim.Play("player_run"); } yield return null; } private IEnumerator JumpPosImpl() { //올라가는애 while (true) { this.player.transform.position += new Vector3(0, this.jumpPower * 4 * Time.deltaTime, 0); if (this.player.transform.position.y >= this.jumpPower) { this.onJumpMax = true; break; } yield return null; } while (true) { this.player.transform.position += new Vector3(0, -this.jumpPower * 4 * Time.deltaTime, 0); if (this.player.transform.position.y <= 0) { this.player.transform.position = new Vector3(0, 0, 0); break; } yield return null; } } #endregion #region 맵컨트롤 private void BGLoop() { StartCoroutine(this.BGLoopImpl()); } private void GroundLoop() { StartCoroutine(this.GroundLoopImpl()); } private void TreeMove() { StartCoroutine(this.TreeMoveImpl()); } private IEnumerator BGLoopImpl() { while(true) { for (int i = 0; i < this.arrBackGround.Length; i++) { this.arrBackGround[i].Translate(new Vector3(0.1f * this.dir, 0, 0) * this.inGameSpeed/40); if (this.arrBackGround[i].transform.localPosition.x >= 7.61 * this.dir) { this.arrBackGround[i].transform.localPosition = new Vector3(-15.36f * this.dir, -9.4412f, 0); } } yield return null; } } private IEnumerator GroundLoopImpl() { while (true) { for (int i = 0; i < this.arrGround.Length; i++) { this.arrGround[i].Translate(new Vector3(-0.1f * this.dir, 0, 0) * this.inGameSpeed); if (this.arrGround[i].transform.localPosition.x <= -4.8 * this.dir) { this.arrGround[i].transform.localPosition = new Vector3(6.4f * this.dir, -9.6912f, 0); } } yield return null; } } private IEnumerator TreeMoveImpl() { while (true) { for (int i = 0; i < this.arrTree.Length; i++) { this.arrTree[i].Translate(new Vector3(-0.1f * this.dir, 0, 0) * this.inGameSpeed/5); if (this.arrTree[i].transform.localPosition.x <= -4 * this.dir) { this.arrTree[i].transform.localPosition = new Vector3(8f * this.dir, -14.298f, 0); } } yield return null; } } #endregion } | cs |
찾아볼 것 Unity Editor확장기능(방향전환)
'Unity > 수업내용' 카테고리의 다른 글
<Test_SunnyLand>짬뿌END (0) | 2019.05.09 |
---|---|
<Test_SunnyLand>짬뿌2 (0) | 2019.05.08 |
(3,4)ShootAndObjectPooling (0) | 2019.05.01 |
(2)MoveAnd//한번 더 확인 (0) | 2019.05.01 |
(1)BGLoop (0) | 2019.05.01 |