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; } }
public void TryToFire() { if (spawnPoint == null) { return; } if (realoadTimeLeft > 0 || timeToNextShot > 0) { return; } audioEvent.Raise(AudioEvents.Shot, transform.position); muzzleFlesh.Play( ); GameObject shotGO = Instantiate(parameters.Projectile, spawnPoint.position, Quaternion.Euler(0, 0, -xAngle + Random.Range(-5f, 5f))); // TODO: suggest that we compare TAGS, not which gamepad this player is controlled by shotGO.GetComponent <ShotBreaksIntoParticle>().fromTeam = FromTeam; Rigidbody2D shotRB = shotGO.GetComponent <Rigidbody2D>( ); shotRB.velocity = shotGO.transform.rotation * Vector2.right * parameters.Force; shotGO.GetComponent <ShotBreaksIntoParticle>( ).SetDamage(parameters.GetDamage( )); shotGO.transform.SetParent(LitterContainer.instanceTransform); GameObject s = Instantiate(shell, shellSpawnPoint.position, Quaternion.identity); s.GetComponent <Rigidbody2D>( ).AddForce(Quaternion.Euler(0, 0, Random.Range(-30, 30)) * spawnPoint.up * 15); timeToNextShot = parameters.DelayBetweenShots; currentMagSize--; model.transform.rotation = Quaternion.Euler(model.transform.eulerAngles.x, model.transform.eulerAngles.y, model.transform.eulerAngles.z + 10f); if (isPlayerDriver) { weaponSlotEvents.Raise(UIEvent.TurretOn, currentMagSize / (float)magSize); } if (currentMagSize <= 0) { currentMagSize = magSize; realoadTimeLeft = parameters.RealoadTime; } }
public void TryToFire( ) { if (spawnPoint == null) { return; } if (realoadTimeLeft > 0 || timeToNextShot > 0) { return; } GameObject shotGO = Instantiate(parameters.Projectile, spawnPoint.position, Quaternion.Euler(0, 0, -xAngle + Random.Range(-5f, 5f))); shotGO.GetComponent <ShotBreaksIntoParticle>().fromTeam = FromTeam; Rigidbody2D shotRB = shotGO.GetComponent <Rigidbody2D>( ); shotRB.velocity = shotGO.transform.rotation * Vector2.right * parameters.Force; shotGO.GetComponent <ShotBreaksIntoParticle>( ).SetDamage(parameters.GetDamage( )); shotGO.transform.SetParent(LitterContainer.instanceTransform); timeToNextShot = parameters.DelayBetweenShots; currentMagSize--; audioEvent.Raise(AudioEvents.DudeBoltShot, transform.position); muzzleFlesh.Play( ); GameObject s = Instantiate(shell, shellSpawnPoint.position, Quaternion.identity); Transform dir = isRight ? shellSpawnPoint : shellSpawnPoint2; s.GetComponent <Rigidbody2D>( ).AddForce(Quaternion.Euler(0, 0, Random.Range(-30, 30)) * dir.up * 3); if (isPlayerDriver) { weaponSlotEvents.Raise(UIEvent.TurretOn, currentMagSize / parameters.MagSize); } if (currentMagSize <= 0) { currentMagSize = (int)parameters.MagSize; realoadTimeLeft = parameters.RealoadTime; } }
public void TryToFire( ) { if (spawnPoint == null) { return; } if (realoadTimeLeft > 0 || timeToNextShot > 0) { return; } audioEvent.Raise(AudioEvents.RocketLaunch, transform.position); GameObject missile = Instantiate(parameters.Projectile, spawnPoint.position, Quaternion.Euler(0, 0, 90 + Random.Range(-15f, 15f))); hasShotMissile = true; if (mechAnimScript != null) { mechAnimScript.positionLocked = true; } HomingMissile missileScript = missile.GetComponent <HomingMissile>(); missileScript.fromTeam = FromTeam; //Debug.Log("Has shot missile Launcher CS " + hasShotMissile); missileScript.SetDamage(parameters.GetDamage( )); //let homingMissile script know mech that shot. Used so self-circle collider of wing spawn is ignored for collision //currently console returns error because the below hierarchy fits the winged spawn only. TODO //Transform shootingMech = transform.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; //Debug.Log("Mech Shooting" + shootingMech); //missile.GetComponent<HomingMissile>().ReceiveMechName(shootingMech); //find parent mech object that shot and pass it to homing Missile so missile ignores hitting that mech at first shootingMech = FindParentWithTag(transform, "Mech"); Debug.Log("Name of Shooting Mech IS " + shootingMech.name); missileScript.ReceiveMechName(shootingMech); // TODO: suggest that we compare TAGS, not which gamepad this player is controlled by missileScript.playerNumber = transform.GetComponentInParent <Mech>().driver.gamepadNumber; // FIXME if (cursor == null) { cursor = UIResourceManager.MouseCursor; } cursor.AddMissile(missile); missile.transform.SetParent(LitterContainer.instanceTransform); timeToNextShot = parameters.DelayBetweenShots; currentMagSize--; if (isPlayerDriver) { weaponSlotEvents.Raise(UIEvent.LauncherOn, 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); } }