private void OnCollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Enemy") && hasPowerup) { Rigidbody enemyRigidbody = collision.gameObject.GetComponent <Rigidbody>(); UnityEngine.Vector3 awayFromPlayer = collision.gameObject.transform.position - transform.position; enemyRigidbody.AddForce(awayFromPlayer * _powerUpStrength, ForceMode.Impulse); Debug.Log("Collided with: " + collision.gameObject.name + "with powerup set to" + hasPowerup); } }
private bool IsDirectionObstructed(PlayerController player, UnityEngine.Vector3 direction, float distance) { if (player.gameObject.layer == player.jumpLayer) { return(false); } RaycastHit hit; if (Physics.Raycast(transform.position, direction, out hit, distance, nailedLayerMask)) { if (player.transform != hit.transform) { return(true); } } return(false); }
public void SetBullet(UnityEngine.Vector3 newDirection, float speed, PlayerController originplayer, Color playerColor) { StartCoroutine(DestroyAfterTime()); StartCoroutine(WaitForExitOriginZone()); direction = newDirection; projectileSpeed = speed; originPlayer = originplayer; trail.material.color = playerColor; if (direction.y >= projectileDownThreshold) { gameObject.layer = UpLayer; } else { gameObject.layer = downLayer; } _LevelManager.instance.scatteredAmmo += 1; thrownEventSound.start(); }
private void OnTriggerEnter(Collider other) { thrownEventSound.stop(FMOD.Studio.STOP_MODE.IMMEDIATE); if (other.gameObject.CompareTag("DestroyProjectiles")) { Destroy(gameObject); } else if (other.gameObject.CompareTag("Player")) { var player = other.gameObject.GetComponent <PlayerController>(); if (!nailed) { if (player == originPlayer) { if (offPlayerZone && !player.AmmoIsMax()) { player.ResupplyAmmo(1); Destroy(gameObject); } } else { FMODUnity.RuntimeManager.PlayOneShot(playerHitSound); player.ProjectileHit(direction, hitForce, damage); Instantiate(impactParticles, transform.position, Quaternion.identity); Destroy(gameObject); } } else { if (player.AmmoIsMax()) { return; } if (!IsDirectionObstructed(player, player.transform.position - transform.position, nailedDistance)) { player.ResupplyAmmo(1); Destroy(gameObject); } } } else if (other.gameObject.CompareTag("Death Zone")) { Instantiate(impactParticles, transform.position, Quaternion.identity); FMODUnity.RuntimeManager.PlayOneShot(bounceSound); var newDir = UnityEngine.Vector3.Reflect(direction, other.transform.position.normalized); newDir.z = 0; direction = newDir; } else if (other.gameObject.CompareTag("Cross Zone")) { other.gameObject.GetComponent <CrossZone>().ObjectCross(transform); } else { FMODUnity.RuntimeManager.PlayOneShot(wallHitSound); Nail(other.GetComponent <Collider>()); Instantiate(impactParticles, transform.position, Quaternion.identity); } }