void Update() { Ray cursorRay = _MainCamera.ScreenPointToRay(Input.mousePosition); bool cursorOnCollider = Physics.Raycast(cursorRay, out RaycastHit hitInfo, _MaxShootDistance); if (Input.GetButtonDown("A Button")) { _AudioSource.PlayOneShot(_ShotSound); // Add force for extra fun points if (hitInfo.rigidbody != null) { hitInfo.rigidbody.AddForce(cursorRay.direction * _BulletForce); } if (cursorOnCollider && hitInfo.transform.CompareTag("Pikmin")) { PikminAI aiComponent = hitInfo.collider.GetComponent <PikminAI> (); if (aiComponent != null && _ShotPikmin.Contains(aiComponent) == false) { // Damage the pikmin, which kills it aiComponent.Die(_PikminRagdollTime); // Add it to the list so we can't kill it after it's dead _ShotPikmin.Add(aiComponent); return; } } var health = GetComponent <IHealth> (); if (health != null) { health.SubtractHealth(_ShotDamage); } } transform.rotation = Quaternion.LookRotation(cursorRay.direction, _MainCamera.transform.up); }
public void OnAttackStart(PikminAI pikmin) { _Attacking.Add(pikmin); }
public void OnAttackEnd(PikminAI pikmin) { _Attacking.Remove(pikmin); }
public static void RemoveFromSquad(PikminAI pikmin, PikminColour colour, PikminMaturity maturity) { _InSquad.Remove(pikmin); Remove(colour, maturity, PikminStatSpecifier.InSquad); }
public static void AddToSquad(PikminAI pikmin, PikminColour colour, PikminMaturity maturity) { _InSquad.Add(pikmin); Add(colour, maturity, PikminStatSpecifier.InSquad); }
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; } }