Beispiel #1
0
    private void Awake()
    {
        _DieParticlePrefab = ResourceManager.Instance.LoadResource <GameObject>(
            "CharacterDie",
            "Prefabs/ParticleInstances/CharacterDie").GetComponent <ParticleInstance>();

        _EnemyMissileHitPrefab = ResourceManager.Instance.LoadResource <GameObject>(
            "EnemyMissileHit",
            "Prefabs/ParticleInstances/EnemyMissileHit").GetComponent <ParticleInstance>();

        _PlayerDieSound = ResourceManager.Instance.LoadResource <AudioClip>(
            "Player_Missile_Hit",
            "Sound/Player_Missile_Hit");

        _PlayerDamageSound = ResourceManager.Instance.LoadResource <AudioClip>(
            "GetDamaged",
            "Sound / GetDamaged");

        idCollider = GetComponent <CharacterController>();
        tag        = "Player";

        // 플레이어블 캐릭터가 피해를 입었을 경우 실행할 내용 정의
        OnTakeAnyDamage += (damageCauser, componentCauser, damage) =>
        {
            // 무적 상태라면 피해 무시
            if (Time.time - _LastInvincibleTime < _InvincibleTime)
            {
                return;
            }

            // 마지막으로 피해를 입은 시간을 저장합니다.
            _LastInvincibleTime = Time.time;

            var sceneInstance = SceneManager.Instance.sceneInstance as GameSceneInstance;

            // 파티클 인스턴스 생성
            var hitParticle = sceneInstance.GetParticleInstance(ParticleInstanceType.EnemyMissileHit) ??
                              sceneInstance.particlePool.RegisterRecyclableObject(
                Instantiate(_EnemyMissileHitPrefab));

            // 파티클 인스턴스 위치 설정
            hitParticle.transform.position = (componentCauser ?? this).transform.position;

            // 파티클 재생
            hitParticle.PlayParticle();

            // 피해량만큼 체력 감소
            _Hp -= damage;

            // 체력이 0 이하가 된다면 사망
            if (_Hp <= 0.0f)
            {
                _Hp = 0.0f;

                // 사망
                OnCharacterDie();
            }
            else
            {
                AudioManager.Instance.PlayAudio(_PlayerDamageSound, false, 0.3f);
            }
        };
    }
Beispiel #2
0
 public void Apply(ParticleInstance inst)
 {
 }
 public void Apply(ParticleInstance inst)
 {
 }