public void TryToFire( ) { if (spawnPoint == null) { return; } if (realoadTimeLeft > 0 || timeToNextShot > 0) { return; } GameObject shotGO = Instantiate ( parameters.Projectile, spawnPoint.position, Quaternion.Euler ( spawnPoint.rotation.eulerAngles.x, spawnPoint.rotation.eulerAngles.y, spawnPoint.rotation.eulerAngles.z + Random.Range(0f, 15f) ) ); Rigidbody2D shotRB = shotGO.GetComponent <Rigidbody2D>( ); shotRB.velocity = shotGO.transform.rotation * Vector2.left * parameters.Force; CanisterGrenade grenade = shotGO.GetComponent <CanisterGrenade>(); grenade.fromTeam = FromTeam; grenade.SetDamage(parameters.GetDamage( )); shotGO.transform.SetParent(LitterContainer.instanceTransform); timeToNextShot = parameters.DelayBetweenShots; currentMagSize--; if (isPlayerDriver) { weaponSlotEvents.Raise(UIEvent.ThrowerOn, currentMagSize / parameters.MagSize); } if (currentMagSize <= 0) { currentMagSize = (int)parameters.MagSize; realoadTimeLeft = parameters.RealoadTime; } }
private void ShootLaser() { if (!shooting) { audioEvent.Raise(audioEventType, gun.transform.position); shooting = true; Invoke("StopSound", 1f); } beam.gameObject.SetActive(true); if (!muzzleFlesh.isPlaying) { muzzleFlesh.Play( ); } Vector2 laserDirection = spawnPoint.rotation * (spawnPoint.right * -1); float currentLaserSize = maxLaserSize; RaycastHit2D hit = Physics2D.Raycast(spawnPoint.position, laserDirection, maxLaserSize); if (hit.collider != null) { currentLaserSize = Vector2.Distance(spawnPoint.position, hit.point); beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, currentLaserSize * laserScaleCorrection); beam.transform.localPosition = new Vector3(beam.transform.localPosition.x, beam.transform.localPosition.y, currentLaserSize * laserMoveCorrection); impact.transform.position = hit.point; if (!impact.isPlaying) { impact.Play( ); } Player collidedPlayer = hit.collider.gameObject.GetComponent <Player>(); Mech collidedMech = hit.collider.gameObject.GetComponent <Mech>(); if (collidedPlayer != null || collidedMech != null) { collidedPlayer = collidedPlayer == null ? collidedMech.driver : collidedPlayer; } if (FromTeam != Team.Independant && collidedPlayer && collidedPlayer.team == FromTeam) { return; } HP hp = hit.collider.GetComponent <HP>( ); if (hp) { didDamageEvent.Raise(0.1f); hp.TakeDamage(parameters.GetDamage( ) * Time.deltaTime); } CanisterGrenade canisterGrenade = hit.collider.GetComponent <CanisterGrenade>(); if (canisterGrenade) { canisterGrenade.DoDestruction(canisterGrenade.transform.position); } Mine mine = hit.collider.GetComponent <Mine>(); if (mine) { mine.ExplodeAndDestroy(); } } else { // Shooting in the air :( currentLaserSize = maxLaserSize; beam.transform.localScale = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, currentLaserSize * laserScaleCorrection); beam.transform.localPosition = new Vector3(beam.transform.localPosition.x, beam.transform.localPosition.y, currentLaserSize * laserMoveCorrection); } }