// 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);
 }
Beispiel #2
0
    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));
    }
Beispiel #4
0
    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
    }
Beispiel #5
0
    // 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;
    }
Beispiel #7
0
    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);
            }
        }
    }
Beispiel #8
0
    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;
    }
Beispiel #9
0
    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);
    }
Beispiel #11
0
        /// <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);
        }
Beispiel #12
0
        /// <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();
    }
Beispiel #15
0
 // 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>();
 }
Beispiel #16
0
    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);
    }
Beispiel #18
0
    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);
    }
Beispiel #19
0
 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>();
 }
Beispiel #20
0
        /// <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));
        }
Beispiel #21
0
 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);
     }
 }
Beispiel #22
0
    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);
 }
Beispiel #24
0
    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);
    }
Beispiel #25
0
    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);
    }
Beispiel #26
0
	// 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);
	}
Beispiel #27
0
    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);
 }
Beispiel #29
0
    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;
    }
Beispiel #30
0
        /// <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);
    }
Beispiel #33
0
        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();
            }
        }
Beispiel #34
0
 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);
     }
 }