private void Update() { // 자동 회수 처리 시 플레이어에게 향하게 함 if (itemStatus.GetPlayerFind().Equals(true)) { if (itemSpeed < 25.0f) { itemSpeed += 0.75f; } rigidbody2D.gravityScale = 0.0f; transform.position = Vector3.MoveTowards(transform.position, player.transform.position, itemSpeed * Time.deltaTime); } // 자동 회수 처리중이 아닐 경우 중력값 및 아이템 속도 기본값으로 설정 else { rigidbody2D.gravityScale = 0.1f; itemSpeed = 2.0f; } }
private void OnTriggerEnter2D(Collider2D collision) { // 충돌한 오브젝트가 아이템인지 체크 if (collision.CompareTag("ITEM")) { ItemStatus itemStatus = collision.GetComponent <ItemStatus>(); // 플레이어 아이템 회수 담당 영역에 닿은 경우 if (gameObject.name.Equals("ItemCapsule") && playerStatus.GetSpriteOff().Equals(false)) { if (itemStatus.GetItemSize().Equals(ItemSize.ITEMSIZE_SMALL)) { // 효과음 재생 SoundManager.instance.PlaySE(21); switch (itemStatus.GetItemType()) { case ItemType.ITEMTYPE_POWER: GameData.currentScore += 10; if (GameData.currentPower < 4.0f) { GameData.currentPower += 0.01f; if (GameData.currentPower.Equals(4.0f)) { // 효과음 재생 SoundManager.instance.PlaySE(39); // 풀 파워 메세지 } } break; case ItemType.ITEMTYPE_SCORE: if (itemStatus.GetPlayerFind().Equals(true)) { scoreRatio = 1.0f; } else { scoreRatio = (player.transform.position.y + 4.334f) / 8.668f; } switch (GameData.gameDifficulty) { case GameDifficulty.DIFFICULTY_EASY: GameData.currentScore += (int)Mathf.Round((5000 + (int)Mathf.Round(5000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_NORMAL: GameData.currentScore += (int)Mathf.Round((10000 + (int)Mathf.Round(10000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_HARD: GameData.currentScore += (int)Mathf.Round((15000 + (int)Mathf.Round(15000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_LUNATIC: GameData.currentScore += (int)Mathf.Round((20000 + (int)Mathf.Round(20000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_EXTRA: GameData.currentScore += (int)Mathf.Round((30000 + (int)Mathf.Round(30000 * scoreRatio)) * 0.1f) * 10; break; default: break; } GameData.currentScoreItem++; break; default: break; } } else if (itemStatus.GetItemSize().Equals(ItemSize.ITEMSIZE_MEDIUM)) { // 효과음 재생 SoundManager.instance.PlaySE(21); switch (itemStatus.GetItemType()) { case ItemType.ITEMTYPE_POWER: GameData.currentScore += 50; if (GameData.currentPower < 4.0f) { GameData.currentPower += 0.05f; if (GameData.currentPower >= 4.0f) { // 효과음 재생 SoundManager.instance.PlaySE(39); GameData.currentPower = 4.0f; // 풀 파워 메세지 } } break; case ItemType.ITEMTYPE_SCORE: if (itemStatus.GetPlayerFind().Equals(true)) { scoreRatio = 1.0f; } else { scoreRatio = (player.transform.position.y + 4.334f) / 8.668f; } switch (GameData.gameDifficulty) { case GameDifficulty.DIFFICULTY_EASY: GameData.currentScore += (int)Mathf.Round((25000 + (int)Mathf.Round(25000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_NORMAL: GameData.currentScore += (int)Mathf.Round((50000 + (int)Mathf.Round(50000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_HARD: GameData.currentScore += (int)Mathf.Round((75000 + (int)Mathf.Round(75000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_LUNATIC: GameData.currentScore += (int)Mathf.Round((100000 + (int)Mathf.Round(100000 * scoreRatio)) * 0.1f) * 10; break; case GameDifficulty.DIFFICULTY_EXTRA: GameData.currentScore += (int)Mathf.Round((150000 + (int)Mathf.Round(150000 * scoreRatio)) * 0.1f) * 10; break; default: break; } GameData.currentScoreItem += 5; break; case ItemType.ITEMTYPE_FULLPOWER: GameData.currentScore += 10000; if (GameData.currentPower < 4.0f) { // 효과음 재생 SoundManager.instance.PlaySE(39); GameData.currentPower = 4.0f; // 풀 파워 메세지 } break; default: break; } } else if (itemStatus.GetItemSize().Equals(ItemSize.ITEMSIZE_LARGE)) { switch (itemStatus.GetItemType()) { case ItemType.ITEMTYPE_POWER: // 효과음 재생 SoundManager.instance.PlaySE(22); GameData.currentScore += 150; if (GameData.currentPower < 4.0f) { GameData.currentPower += 0.15f; if (GameData.currentPower >= 4.0f) { // 효과음 재생 SoundManager.instance.PlaySE(39); GameData.currentPower = 4.0f; // 풀 파워 메세지 } } break; case ItemType.ITEMTYPE_LIFE: // 효과음 재생 SoundManager.instance.PlaySE(17); GameData.currentPlayerLife++; // 플레이어 잔기 추가 알림 메세지 break; case ItemType.ITEMTYPE_LIFEFRAGMENT: // 효과음 재생 SoundManager.instance.PlaySE(22); GameData.currentPlayerLifeFragment++; if (GameData.currentPlayerLifeFragment >= 8) { // 효과음 재생 SoundManager.instance.PlaySE(17); GameData.currentPlayerLife++; GameData.currentPlayerLifeFragment = 0; // 플레이어 잔기 추가 알림 메세지 } break; case ItemType.ITEMTYPE_SPELL: // 효과음 재생 SoundManager.instance.PlaySE(6); GameData.currentPlayerSpell++; // 플레이어 스펠 추가 알림 메세지 break; case ItemType.ITEMTYPE_SPELLFRAGMENT: // 효과음 재생 SoundManager.instance.PlaySE(22); GameData.currentPlayerSpellFragment++; if (GameData.currentPlayerSpellFragment >= 8) { // 효과음 재생 SoundManager.instance.PlaySE(6); GameData.currentPlayerSpell++; GameData.currentPlayerSpellFragment = 0; // 플레이어 스펠 추가 알림 메세지 } break; case ItemType.ITEMTYPE_FULLPOWER: // 효과음 재생 SoundManager.instance.PlaySE(22); GameData.currentScore += 100000; if (GameData.currentPower < 4.0f) { // 효과음 재생 SoundManager.instance.PlaySE(39); GameData.currentPower = 4.0f; // 풀 파워 메세지 } break; default: break; } } ClearItem(collision.gameObject); } // 저속 이동 시에 활성화되는 플레이어 주변 아이템 자동 회수 영역에 닿은 경우 else if (gameObject.name.Equals("ItemCircle") && playerStatus.GetSpriteOff().Equals(false)) { if (playerStatus.GetSlowMove().Equals(true)) { itemStatus.SetPlayerFind(true); } } // 아이템이 화면 밑으로 벗어났을 경우 아이템 자동 제거 else if (gameObject.name.Equals("ITEMDESTROYZONE")) { ClearItem(collision.gameObject); } } }