コード例 #1
0
    // 말탄환에 맞거나 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();
        }
    }
コード例 #2
0
    // 말탄환에 맞거나 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();
        }
    }