// OnRelease is called once when the weapon is released protected override void OnRelease() { CurrentBeam.TurnOffBeam(laserBeamPool, data.DecayTimePerWidth); CurrentBeam = null; player.RemoveBuff(laserbuff); GameManager.instance.audioManager.Stop("Laser", player.playerNumber); }
public void Shoot() { if (_shield != null) { return; } if (LaserBeamPrefab && isOverheated == false) { foreach (Vector3 direction in laserBeamDirections[laserLevel]) { LaserBeam laserBeam = Instantiate(LaserBeamPrefab, self.position, Quaternion.identity, laserBeamParent); laserBeam.Shoot(direction, LaserBeamSpeed); } if (OverheatEnabled) { overheatPoints += (OverheatPointsLevelZero + laserLevel); if (overheatPoints >= 100) { overheatPoints = 100; isOverheated = true; if (OverheatSliderFill) { OverheatSliderFill.color = Color.red; } UpdateOverheatSlider(); } } } }
public void ShootLasersAt(Explodable explodable) { LaserBeam leftBeam = CreateBeamAt(m_leftEye, explodable.laserTarget); LaserBeam rightBeam = CreateBeamAt(m_rightEye, explodable.laserTarget); StartCoroutine(FinishAttack(explodable, leftBeam, rightBeam)); }
private void Start() { _anim = GetComponent <Animator>(); _attackManager = GetComponent <CharacterAttackManager>(); _healthManager = GetComponent <HealthManager>(); _laserBeam = GetComponent <LaserBeam>(); #region Spatialized if (_laserBeam != null) { if (_laserBeam._laserType == LaserType.laser) { AkSoundEngine.PostEvent("Play_Laser", gameObject); } if (_laserBeam._laserType == LaserType.multilaserHorizontal || _laserBeam._laserType == LaserType.multiLaserVertical) { AkSoundEngine.PostEvent("Play_MultiLaser", gameObject); } } if (GetComponent <ElectricPlate>()) { AkSoundEngine.PostEvent("Play_ElectricTrap_Inactive", gameObject); } #endregion }
// Start is called before the first frame update void Start() { this._audioManager = GameObject.Find("Audio_Manager").GetComponent <AudioManager>(); LogHelper.CheckForNull(_audioManager, nameof(_audioManager)); this._player = GameObject.Find("Player").GetComponent <Player>(); LogHelper.CheckForNull(_player, nameof(_player)); _laserBeam = _laserBeamPrefab.GetComponent <LaserBeam>(); LogHelper.CheckForNull(_laserBeam, nameof(_laserBeam)); _bossEye = GetComponentInChildren <EnemyBossEye>(); _bossEye.HitPoints += CurrentLevel; LogHelper.CheckForNull(_bossEye, nameof(_bossEye)); _bossEye.Destroyed.AddListener(BossEyeDestroyed); _bossEye.IsImmune = true; _turrets = GetComponentsInChildren <EnemyTurret>(); foreach (var turret in _turrets) { turret.Destroyed.AddListener(OnTurretDestroyed); turret.IsImmune = true; turret.HitPoints += CurrentLevel; } _nextFire = Time.time + UnityEngine.Random.Range(2f, 10f); this.transform.position = _startingPosition; }
void startLaserBeam() { LaserBeam laserBeam = this.gameObject.transform.GetChild(3).GetComponent <LaserBeam>(); startLaser = true; laserBeam.laserStart = startLaser; }
public void ShootLaser() { if (Time.time >= laserDelayTimer + laserDelay) { _audioSource.PlayOneShot(gunSound); laserDelayTimer = Time.time; Vector3 forward = transform.forward; Vector3 gunBarrel = transform.position; Vector3 rayEnd = forward * range; Debug.DrawRay(gunBarrel, rayEnd, Color.red); RaycastHit hit; LaserBeam beamInstance = Instantiate(laserBeam, transform.position, transform.rotation); beamInstance.Set(gunBarrel, gunBarrel + rayEnd); //Detect hits if (Physics.Raycast(gunBarrel, rayEnd, out hit, range)) { HitWithLaser(hit); } } }
private static void UpdateBeam(ref LaserBeam.FrameData frame, LaserBeam beam) { Vector3 vector; Transform transform = beam.transform; frame.origin = transform.position; frame.direction = transform.forward; frame.direction.Normalize(); int beamLayers = (int)beam.beamLayers; if (beamLayers == 0) { frame.hit = false; } else if (beam.isViewModel) { RaycastHit2 hit; if (frame.hit = Physics2.Raycast2(frame.origin, frame.direction, out hit, beam.beamMaxDistance, beamLayers)) { frame.hitPoint = hit.point; frame.hitNormal = hit.normal; } } else { RaycastHit hit2; if (frame.hit = Physics.Raycast(frame.origin, frame.direction, out hit2, beam.beamMaxDistance, beamLayers)) { frame.hitPoint = hit2.point; frame.hitNormal = hit2.normal; } } if (!frame.hit) { frame.didHit = false; frame.point.x = frame.origin.x + (frame.direction.x * beam.beamMaxDistance); frame.point.y = frame.origin.y + (frame.direction.y * beam.beamMaxDistance); frame.point.z = frame.origin.z + (frame.direction.z * beam.beamMaxDistance); frame.distance = beam.beamMaxDistance; frame.distanceFraction = 1f; frame.pointWidth = beam.beamWidthEnd; } else { frame.point = frame.hitPoint; frame.didHit = true; frame.distance = (((frame.direction.x * frame.point.x) + (frame.direction.y * frame.point.y)) + (frame.direction.z * frame.point.z)) - (((frame.direction.x * frame.origin.x) + (frame.direction.y * frame.origin.y)) + (frame.direction.z * frame.origin.z)); frame.distanceFraction = frame.distance / beam.beamMaxDistance; frame.pointWidth = Mathf.Lerp(beam.beamWidthStart, beam.beamWidthEnd, frame.distanceFraction); frame.dotRadius = Mathf.Lerp(beam.dotRadiusStart, beam.dotRadiusEnd, frame.distanceFraction); } frame.originWidth = beam.beamWidthStart; vector.x = vector.y = vector.z = frame.originWidth; frame.bounds = new Bounds(frame.origin, vector); vector.x = vector.y = vector.z = frame.pointWidth; frame.bounds.Encapsulate(new Bounds(frame.point, vector)); frame.beamsLayer = ((int)1) << beam.gameObject.layer; allBeamsMask |= frame.beamsLayer; }
public void SpawnLaser() { activeLaser = Instantiate(laserPrefab, transform.position, transform.rotation, transform); LaserBeam laser = activeLaser.GetComponent <LaserBeam>(); laser.basePos = transform.position; laser.FireToDirection(transform.up, gameObject); }
LaserBeam CreateBeamAt(Transform parent, Vector3 target) { LaserBeam beam = Instantiate(m_laserBeam); beam.transform.parent = parent; beam.SetTarget(target); return(beam); }
/// <summary> /// Emits a copy of the given Laser beam at the given offset and angle, /// relative to this Portal. /// </summary> /// <param name="laser">The Laser beam to copy.</param> /// <param name="offset">The offset of the Laser beam.</param> /// <param name="angle">The angle from the normal of this Portal's plane.</param> public void EmitLaserBeam(LaserBeam laser, Vector3 offset, Vector3 angle) { LaserEmitter emitter = this.PortalEmitter.GetEmitter(laser); emitter.transform.position = offset; emitter.transform.rotation = Quaternion.FromToRotation(Vector3.forward, angle); emitter.transform.localScale = new Vector3(-0.385f, -0.385f, -0.385f); }
/// <summary> /// Creates the Laser beam emitted from this LaserEmitter. /// </summary> public void MakeLaser() { Vector3 pos = gameObject.transform.position; Vector3 dir = -gameObject.transform.forward; LaserBeam l = new LaserBeam(pos, dir, this); l.Create(); }
private void SetUpLaser(LaserBeam laserBeam) { laserBeam.player = player.controller; laserBeam.transform.parent = player.controller.transform; laserBeam.transform.forward = player.controller.transform.forward; laserBeam.transform.position = player.controller.transform.position + laserBeam.transform.forward * 0.5f; laserBeam.SetColor(player.controller.playerColor); laserBeam.EnableParticles(); }
IEnumerator FinishAttack(Explodable explodable, LaserBeam leftBeam, LaserBeam rightBeam) { yield return(new WaitForSeconds(m_attackDuration)); Destroy(leftBeam.gameObject); Destroy(rightBeam.gameObject); explodable.Explode(); }
// Start is called before the first frame update void Start() { mainCamera = Camera.main; playerBody = GetComponent <Transform>(); AbsorbSound = GetComponent <AudioSource>(); laserControl = GetComponentInChildren <LaserBeam>(); chargeText.text = string.Format("Charge: {0:0.0}", charge); follower = GameObject.Find("Follower").GetComponent <FollowerFollow>(); }
public void AddBeam( Vector3 position, Vector3 direction, LaserSource source) { LaserBeam beam = new LaserBeam(); beam.color = source.laserColor; beam.segments.Add(new LaserSegment(position, direction)); beam.source = source; beam.bounced = false; beams.Add(beam); }
private LaserBeam CreateLaserBeam() { LaserBeam laserBeam = GameObject.Instantiate <GameObject>(data.LaserBeam.gameObject, player.controller.transform).GetComponent <LaserBeam>(); laserBeam.OnHit.AddListener((Vector3 origin, Vector3 contactPoint, GameObject target) => { Hit(origin, contactPoint, target, ChargeLevel); }); laserBeam.IgnoreCollision = player.controller.gameObject; //laserBeam.hitCooldown = data.hitCooldown; laserBeam.gameObject.SetActive(false); return(laserBeam); }
public LaserBeam AddLaserBeam(Vector2 globalPosition, float globalRotation) { LaserBeam laserBeam = InstanceResource <LaserBeam>("res://objects/LaserBeam.tscn"); laserBeam.GlobalPosition = globalPosition; laserBeam.GlobalRotation = globalRotation; gameplayScreen.AddProjectile(laserBeam); MoonHunterState.LaserBeams += 1; return(laserBeam); }
void Start() { car = GameObject.FindGameObjectWithTag("Player"); //startLoc = transform.position; laser = GetComponent <LaserBeam>(); rb = GetComponent <Rigidbody>(); laser.enabled = false; lr = GetComponent <LineRenderer>(); lr.enabled = false; animator = GetComponent <Animator>(); }
/// <summary> /// Creates a reflection of the specified Laser beam. /// </summary> /// <returns>The reflected Laser beam segment.</returns> /// <param name="laser">The Laser beam.</param> /// <param name="surfaceNormal">The surface normal.</param> public static LaserBeam CreateReflection(LaserBeam laser, Vector3 surfaceNormal) { if (laser == null) { throw new ArgumentNullException("laser"); } Vector3 reflection = Vector3.Reflect(laser.Direction, surfaceNormal); return(laser.Extend(laser.Endpoint, reflection)); }
private void PlaySound(LaserBeam anyBeam, AudioClip clip) { if (!anyBeam) { clip.PlayLocal(base.itemRep.transform, Vector3.zero, 1f, AudioRolloffMode.Logarithmic, 1f, 4f); } else { clip.PlayLocal(anyBeam.transform, Vector3.zero, 1f, AudioRolloffMode.Logarithmic, 1f, 4f); } }
public void DisableSuperSkill() { isUsingSuperFlight = false; isUsingSuperSpeed = false; isUsingSuperTime = false; // Remove the superskill trail TrailRenderer trailRenderer = gameObject.GetComponentInChildren <TrailRenderer>(); trailRenderer.enabled = false; // Reset gravity to its orignal value gameObject.GetComponent <Rigidbody2D>().gravityScale = oriGravityScale; PteraMover.DeactivateTimeFreeze(); CaveFlamePit.DeactivateTimeFreeze(); Fireball.DeactivateTimeFreeze(); DestroyByTime.DeactivateTimeFreeze(); LaserBeam.DeactivateTimeFreeze(); Saw.DeactivateTimeFreeze(); LaserTurret.DeactivateTimeFreeze(); Bat.DeactivateTimeFreeze(); SwingingBoulder[] sb = FindObjectsOfType <SwingingBoulder>(); sb[0].DeactivateTimeFreeze(); sb[1].DeactivateTimeFreeze(); sb[2].DeactivateTimeFreeze(); sb[3].DeactivateTimeFreeze(); sb[4].DeactivateTimeFreeze(); sb[5].DeactivateTimeFreeze(); sb[6].DeactivateTimeFreeze(); RockController.DeactivateTimeFreeze(); Turret.DeactivateTimeFreeze(); PlayerController[] players = FindObjectsOfType <PlayerController>(); foreach (PlayerController p in players) { p.timeFreezeActivated = false; p.GetComponent <Rigidbody2D>().isKinematic = false; p.anim.enabled = true; } GameObject[] FXs = GameObject.FindGameObjectsWithTag("FX"); foreach (GameObject fx in FXs) { fx.GetComponent <ParticleSystem>().Play(); } Arrow.DeactivateTimeFreeze(); Puma.DeactivateTimeFreeze(); Piranha.DeactivateTimeFreeze(); Cobra.DeactivateTimeFreeze(); Saw.DeactivateTimeFreeze(); Banana.DeactivateTimeFreeze(); BananaSpawn[] bs = FindObjectsOfType <BananaSpawn>(); bs[0].DeactivateTimeFreeze(); bs[1].DeactivateTimeFreeze(); bs[2].DeactivateTimeFreeze(); }
// OnActivate is called once when the weapon is activated protected override void OnActivate(Vector3 start, Vector3 direction, PlayerController targetController = null) { CurrentBeam = laserBeamPool.Count > 0 ? laserBeamPool.Dequeue() : CreateLaserBeam(); SetUpLaser(CurrentBeam); startChargeTime = Time.time; CurrentBeam.gameObject.SetActive(true); CurrentBeam.MaxLength = 0; CurrentBeam.Width = data.minWidth; player.AddBuff(laserbuff); GameManager.instance.audioManager.Play("Laser", player.playerNumber); }
public void AddBeam(Vector3 position, Vector3 direction, LaserSource source) { LaserBeam beam = new LaserBeam(); beam.color = source.laserColor; beam.segments.Add(new LaserSegment(position, direction)); beam.source = source; beam.bounced = false; beams.Add(beam); }
private void Start() { LaserBeam[] laserBeams = Object.FindObjectsOfType <LaserBeam>(); if (laserBeams.Length > 0) { m_LaserBeam = laserBeams[0]; } m_PanelImage = Panel.GetComponent <Image>(); m_PanelText = Panel.GetComponentInChildren <Text>(); SetPanelAlpha(1.0f); }
// Use this for initialization void Start () { _laser = GetComponentInChildren<LaserBeam>(); _chargeAudio = GetComponent<AudioSource>(); _initialEyeRotation = transform.localRotation; _areaOfEffect = GetComponentInChildren<AreaOfEffect>(); _areaOfEffect.Triggered += ActivatePlayerTracking; _target = _hero.LookAtTransform; _followTarget = true; IrisCharge = DeactivatedChargeValue; EnableLaser(false); }
public void SuperTime() { // Next iteration PteraMover.ActivateTimeFreeze(); CaveFlamePit.ActivateTimeFreeze(); Fireball.ActivateTimeFreeze(); DestroyByTime.ActivateTimeFreeze(); LaserBeam.ActivateTimeFreeze(); Saw.ActivateTimeFreeze(); LaserTurret.ActivateTimeFreeze(); SwingingBoulder[] sb = FindObjectsOfType <SwingingBoulder>(); sb[0].ActivateTimeFreeze(); sb[1].ActivateTimeFreeze(); sb[2].ActivateTimeFreeze(); sb[3].ActivateTimeFreeze(); sb[4].ActivateTimeFreeze(); sb[5].ActivateTimeFreeze(); sb[6].ActivateTimeFreeze(); RockController.ActivateTimeFreeze(); Turret.ActivateTimeFreeze(); PlayerController[] players = FindObjectsOfType <PlayerController>(); foreach (PlayerController p in players) { if (p.playerNumber != playerNumber) { p.timeFreezeActivated = true; p.GetComponent <Rigidbody2D>().isKinematic = true; p.anim.enabled = false; } } GameObject[] FXs = GameObject.FindGameObjectsWithTag("FX"); foreach (GameObject fx in FXs) { fx.GetComponent <ParticleSystem>().Pause(); } Arrow.ActivateTimeFreeze(); Puma.ActivateTimeFreeze(); Piranha.ActivateTimeFreeze(); Cobra.ActivateTimeFreeze(); Saw.ActivateTimeFreeze(); Banana.ActivateTimeFreeze(); BananaSpawn[] bs = FindObjectsOfType <BananaSpawn>(); Bat.ActivateTimeFreeze(); bs[0].ActivateTimeFreeze(); bs[1].ActivateTimeFreeze(); bs[2].ActivateTimeFreeze(); // Add a trail to show the use of a super skill TrailRenderer trailRenderer = gameObject.GetComponentInChildren <TrailRenderer>(); trailRenderer.enabled = true; }
protected override void End() { if (CurrentBeam != null) { CurrentBeam.TurnOffBeam(null, data.DecayTimePerWidth); CurrentBeam = null; } while (laserBeamPool.Count > 0) { GameObject.Destroy(laserBeamPool.Dequeue().gameObject); } player.RemoveBuff(laserbuff); }
private void Shoot() { if (attachedObject == null) { return; } GameObject spawned = Instantiate(laserBeamPrefab, guidanceBeam.transform.position, transform.rotation); currentLaserBeam = spawned.GetComponent <LaserBeam>(); currentLaserBeam.damage = damage; currentLaserBeam.owner = this; currentLaserBeam.laserType = BULLET_TYPE.PLAYER; }
/// <summary> /// Creates a new LaserEmitter that emits the same type of Laser beam /// as the provided one. /// <para> /// The LaserEmitter is created as a separate game object and /// added as a child of this game object. /// </para> /// <para> /// To save resources, it is recommended to call <see cref="MultiEmitter.GetEmitter"/> /// instead, which re-uses existing LaserEmitters. However, this method can be called /// to create LaserEmitters beforehand. /// </para> /// </summary> /// <param name="laser">The original Laser beam.</param> /// <returns>The created LaserEmitter.</returns> public LaserEmitter CreateEmitter(LaserBeam laser) { GameObject emitterObject = new GameObject("Emitter"); emitterObject.transform.parent = this.gameObject.transform; VolumeLineRenderer renderer = emitterObject.AddComponent <VolumeLineRenderer>(); LaserEmitter emitter = emitterObject.AddComponent <LaserEmitter>(); LaserProperties prop = emitterObject.AddComponent <LaserProperties>(); ApplyProperties(renderer, laser, prop); return(emitter); }
public static Vector3 LaserIntercept(CompProjectileInterceptor __instance, Projectile projectile, Vector3 lastExactPos, Vector3 newExactPos) { LaserBeam beam = projectile as LaserBeam; if (beam != null) { Vector3 vec = LaserIntersectionPoint(newExactPos, lastExactPos, __instance.parent.Position.ToVector3Shifted(), __instance.Props.radius - 0.5f)[0]; vec.y = AltitudeLayer.MoteOverhead.AltitudeFor(); beam.destination = vec; return(vec); } return(newExactPos); }
private void SpawnReflection(Vector3 pointOfReflection, Vector3 reflectionNormal) { float impactAngle = Vector3.Angle(-transform.up, reflectionNormal); Vector3 impactTangent = Vector3.Cross(-transform.up, reflectionNormal); Quaternion reflectedRotation = Quaternion.AngleAxis(180 + impactAngle * 2, impactTangent) * transform.rotation; LaserBeam reflectedBeam = Instantiate(this); reflectedBeam.gameObject.name = gameObject.name; reflectedBeam.transform.parent = transform.parent; reflectedBeam.transform.localScale = transform.localScale; reflectedBeam.transform.rotation = reflectedRotation; reflectedBeam.transform.position = pointOfReflection - reflectedBeam.transform.TransformVector(Vector3.up * beamLengthLocal * .5f); }
public static void placeLaser(GameObject shooter, GameObject target, List<DamageBullet> bullets, BoundingFrustum cameraFrustum, GameMode gameMode) { Matrix orientationMatrix = Matrix.CreateRotationY(((Submarine)shooter).ForwardDirection); Vector3 movement = Vector3.Zero; movement.Z = 1; Vector3 shootingDirection = Vector3.Transform(movement, orientationMatrix); //one topedo on the left and one on the right LaserBeam newBullet = new LaserBeam(); newBullet.initialize(shooter.Position + shootingDirection * 5, shootingDirection, GameConstants.BulletSpeed, (int)(GameConstants.LaserBeamDamage * ((float)HydroBot.gamePlusLevel / 2 + 1)), target, (Submarine)shooter, gameMode); newBullet.loadContent(PoseidonGame.contentManager, "Models/BulletModels/torpedo"); bullets.Add(newBullet); if (shooter.BoundingSphere.Intersects(cameraFrustum)) { PoseidonGame.audio.bossShot.Play(); } }