Пример #1
0
    void HandleDeath()
    {
        if (_InSquad)
        {
            RemoveFromSquad(PikminStates.Dead);
        }

        if (_RagdollTime > 0)
        {
            _Rigidbody.constraints = RigidbodyConstraints.None;
            _Rigidbody.isKinematic = false;
            _Rigidbody.useGravity  = true;
            _RagdollTime          -= Time.deltaTime;
            return;
        }

        PikminStatsManager.Remove(_Data._Colour, _CurrentMaturity, _CurrentStatSpecifier);

        AudioSource.PlayClipAtPoint(_Data._DeathNoise, transform.position, _Data._AudioVolume);

        // Create the soul gameobject, and play the death noise
        var soul       = Instantiate(_DeathParticle, transform.position, Quaternion.Euler(-90, 0, 0)).GetComponent <ParticleSystem> ();
        var soulEffect = soul.main;

        soulEffect.startColor = _Data._DeathSpiritColour;
        Destroy(soul.gameObject, 5);

        // Remove the object
        Destroy(gameObject);
    }
Пример #2
0
    public void AddToSquad()
    {
        if (!_InSquad && _CurrentState != PikminStates.Dead)
        {
            _InSquad = true;
            ChangeState(PikminStates.RunningTowards);

            PikminStatsManager.AddToSquad(this, _Data._Colour, _CurrentMaturity);
            PikminStatsManager.ReassignFormation();
        }
    }
Пример #3
0
    void Awake()
    {
        _Rigidbody   = GetComponent <Rigidbody> ();
        _AudioSource = GetComponent <AudioSource> ();
        _Collider    = GetComponent <CapsuleCollider> ();

        _PikminMask = LayerMask.NameToLayer("Pikmin");

        _CurrentStatSpecifier = PikminStatSpecifier.OnField;
        PikminStatsManager.Add(_Data._Colour, _CurrentMaturity, _CurrentStatSpecifier);
    }
Пример #4
0
    void Update()
    {
        if (Input.GetKeyDown(_KeyToApply))
        {
            Instantiate(_Pikmin, transform.position, Quaternion.identity);
        }

        if (Input.GetKeyDown(_KeyToPrint))
        {
            PikminStatsManager.Print();
        }
    }
Пример #5
0
    public void RemoveFromSquad(PikminStates to = PikminStates.Idle)
    {
        if (_InSquad)
        {
            _InSquad      = false;
            _TargetObject = null;
            ChangeState(to);

            PikminStatsManager.RemoveFromSquad(this, _Data._Colour, _CurrentMaturity);
            PikminStatsManager.ReassignFormation();
        }
    }
Пример #6
0
    void Update()
    {
        int areaValue  = PikminStatsManager.GetTotalOnField();
        int squadValue = PikminStatsManager.GetTotalInSquad();

        if (_OnFieldText.text != areaValue.ToString())
        {
            PlayChangeAnimation(true);
            _OnFieldText.text = areaValue.ToString();
        }

        if (_InSquadText.text != squadValue.ToString())
        {
            PlayChangeAnimation(false);
            _InSquadText.text = squadValue.ToString();
        }

        _Flasher.index = areaValue >= 100 ? 1 : 0;
    }
Пример #7
0
    void Update()
    {
        // Tab pauses the game, experimental
        if (Application.isEditor)
        {
            if (Input.GetKeyDown(KeyCode.Tab))
            {
                GameManager._IsPaused = !GameManager._IsPaused;
                Time.timeScale        = GameManager._IsPaused ? 0 : 1;
            }

            if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                SubtractHealth(_MaxHealth / 10);
            }
        }

        if (_CurrentHealth <= 0)
        {
            Debug.Log("Player is dead!");
            Debug.Break();
        }

        // If the health is less that a quarter of what the max is, then play the low health audio
        if (_CurrentHealth / _MaxHealth < 0.25f)
        {
            _LowHealthAudioTimer += Time.deltaTime;
            if (_LowHealthAudioTimer >= _LowHealthDelay)
            {
                _LowHealthAudioTimer = 0;
                _AudioSource.PlayOneShot(_LowHealthClip);
            }
        }

        Vector3 targetPosition = _FormationCenter.transform.position - transform.position;

        _FormationCenter.transform.position =
            transform.position + Vector3.ClampMagnitude(targetPosition, _StartingDistance + _DistancePerPikmin * PikminStatsManager.GetTotalInSquad());

        //Added by Chirz
        if (!_Paralyzed)
        {
            interactorKey.action = Input.GetKeyDown(KeyCode.Space);
        }
    }
Пример #8
0
    void Update()
    {
        if (GameManager._Player._Paralyzed)
        {
            return;
        }

        if (Input.GetButtonDown("X Button"))
        {
            PikminStatsManager.ClearSquad();
        }

        bool attemptedGrab = false;

        if (Input.GetButtonDown("A Button"))
        {
            attemptedGrab = true;
            if (PikminStatsManager.GetTotalInSquad() > 0)
            {
                _HoldingPikmin = GetClosestPikmin();
                if (_HoldingPikmin != null)
                {
                    _HoldingPikminAI = _HoldingPikmin.GetComponent <PikminAI> ();
                    _HoldingPikminAI.StartThrowHold();
                }
            }
        }

        if (_HoldingPikmin != null)
        {
            // TODO: Add throwing
            if (Input.GetButton("A Button"))
            {
                _HoldingPikmin.transform.position = transform.position + transform.forward;
            }
            else
            {
                // Throw the Pikmin!
                _HoldingPikminAI.EndThrowHold(_ReticleTransform.position);

                _HoldingPikmin   = null;
                _HoldingPikminAI = null;
            }
        }
        else if (attemptedGrab && _PunchTimer <= 0)
        {
            // We couldn't grab a Pikmin, we can punch now

            Collider[] pCollided = Physics.OverlapBox(transform.position + transform.forward - transform.right / 2, _PunchBoxSize / 2, transform.rotation, _PunchAffectedLayers);
            foreach (var pHit in pCollided)
            {
                var hComponent = pHit.GetComponent <IHealth> ();

                // Hit the object!
                hComponent.SubtractHealth(_PunchDamage);
                // TODO: figure out a particular system to allow for custom hit particles / sounds
            }

            _PunchTimer = _PunchCooldown;
        }

        // Decrease the punch timer if we've punched, effectively acts as a cooldown so you can't spam
        if (_PunchTimer > 0)
        {
            _PunchTimer -= Time.deltaTime;
        }
    }