// 말탄환에 맞거나 enemy와 충돌했을 경우 private void OnTriggerEnter2D(Collider2D collision) { if (Health != 0 && HitFlag && !shield.isActiveAndEnabled) { if (collision.tag.Equals("letterbullet")) { HitFlag = false; int damage = collision.GetComponent <B_DestroyInTime>().power; // 아이템 x일 시, 체력이 데미지 양만큼 깎인다. if (!isItem) { Health -= damage; UIM.HitPlayer(damage); } // 아이템을 먹었다면, 체력이 데미지 양만큼 회복된다. else { Health += damage; UIM.HealPlayer(damage); } myAnimator.SetTrigger("Hit"); Invoke("HitFlagOn", 2f); } if (collision.tag.Equals("enemy1") || collision.tag.Equals("enemy2")) { HitFlag = false; // 아이템 x일 시, 체력이 데미지 양만큼 깎인다. if (!isItem) { Health -= 30; UIM.HitPlayer(30); } // 아이템을 먹었다면, 체력이 데미지 양만큼 회복된다. else { Health += 30; UIM.HealPlayer(30); } myAnimator.SetTrigger("Hit"); Invoke("HitFlagOn", 1f); } } // 클리어 후 문에 닿으면 방향 전환 if (collision.tag.Equals("door0") || collision.tag.Equals("door1")) { FlipDirection(); } }
// 말탄환에 맞거나 enemy와 충돌했을 경우 private void OnTriggerEnter2D(Collider2D collision) { // 점프 시 발판에 방해받지 않게 하기 if (collision.CompareTag("floor")) { Vector2 playerXY = ThisTransform.position; Vector2 collisionXY = collision.transform.position; if (collisionXY.y > playerXY.y - 0.5f) { isFloor = true; Invoke("OffIsFloor", 0.5f); ThisCollider.isTrigger = true; } else { ThisCollider.isTrigger = false; } } if (Health != 0 && HitFlag && !shield.isActiveAndEnabled) { // 말탄환에 맞았을 경우 if (collision.CompareTag("letterbullet")) { B_SoundManager.instance.PlaySingle(playerHit); HitFlag = false; int damage = collision.GetComponent <B_DestroyInTime>().power; // 아이템 x일 시, 체력이 데미지 양만큼 깎인다. if (!isItem) { Health -= damage; UIM.HitPlayer(damage); } // 아이템을 먹었다면, 체력이 데미지 양만큼 회복된다. else { Health += damage; UIM.HealPlayer(damage); if (Health >= 600) { Health = 600; } } faceAnimator.SetTrigger("hit"); handsAnimator.SetTrigger("hit"); Invoke("HitFlagOn", 1f); // 맞은 방향 반대편으로 밀려나는 효과 isDrag = true; float playerX = ThisTransform.position.x; float collisionX = collision.transform.position.x; if (collisionX < playerX) { ThisBody.velocity = Vector2.right * 2; } else if (collisionX > playerX) { ThisBody.velocity = Vector2.left * 2; } Invoke("DragOff", 1f); } // 적과 충돌한 경우 if (collision.CompareTag("enemy1") || collision.CompareTag("enemy2")) { B_SoundManager.instance.PlaySingle(playerHit); HitFlag = false; // 아이템 x일 시, 체력이 데미지 양만큼 깎인다. if (!isItem) { Health -= 30; UIM.HitPlayer(30); } // 아이템을 먹었다면, 체력이 데미지 양만큼 회복된다. else { Health += 30; UIM.HealPlayer(30); if (Health >= 600) { Health = 600; } } faceAnimator.SetTrigger("hit"); handsAnimator.SetTrigger("hit"); Invoke("HitFlagOn", 0.5f); // 맞은 방향 반대편으로 밀려나는 효과 isDrag = true; float playerX = ThisTransform.position.x; float collisionX = collision.transform.position.x; if (collisionX < playerX) { ThisBody.velocity = Vector2.right * 4; } else if (collisionX > playerX) { ThisBody.velocity = Vector2.left * 4; } Invoke("DragOff", 0.5f); } } if (collision.CompareTag("door0")) { switchB = true; FlipDirection(); } }