示例#1
0
    public void fireLaser()
    {
        GameObject laserClone;
        //we need to spawn the laser slightly below the centre of the player model
        //otherwise the laser appears to come out of the alien's belly button
        Vector3 tempPos = transform.position;

        if (getLaserType().Equals(LaserType.Man))
        {
            tempPos.y += 2.5f;
        }
        else
        {
            tempPos.y -= 2.5f;
        }
        //spawn the laser
        laserClone = Instantiate(laserPrefab, tempPos, transform.rotation) as GameObject;

        laserType = laserClone.GetComponent("TypeOfLaser") as TypeOfLaser;
        ls        = laserClone.GetComponent("LaserMovement") as LaserMovement;

        laserType.setTypeOfLaser(getLaserType());
        ls.setLaserType(laserType.getTypeOfLaser());
        try{
            //play laser fire sound
            audioS.PlayOneShot(fireFX, 0.3F);
        }catch (NullReferenceException e) {
            //catches a null exception
            Debug.Log("This would have errored");
        }
        ls.startMoving();
    }
示例#2
0
        public Laser(Vector2 position, Vector2 targetPosition, Vector2 scale, TypeOfLaser type, float damage, int lifeTimer, Texture2D texture) : base(position, scale, texture)
        {
            this.targetPosition = targetPosition;
            Type        = type;
            this.damage = damage;
            Vector2 tempOrigin = new Vector2(Size.X / 2, 0);

            Origin = tempOrigin;
            Vector2 dPos = targetPosition - position;

            rotation       = (float)Math.Atan2(dPos.Y, dPos.X) - MathHelper.ToRadians(90);
            direction      = Vector2.Normalize(targetPosition - position);
            this.lifeTimer = new Timer(100);
            timerActivated = false;
            hitbox         = new Rectangle(0, 0, 0, 0);
            IsCollidable   = true;
            //FindAllReasonablePositions();
        }
示例#3
0
        public override void Fire(Vector2 center, Vector2 target, TypeOfBullet type, GameTime gameTime)
        {
            if (fireTimer.IsDone(gameTime))
            {
                if (type == TypeOfBullet.Enemy)
                {
                    laserType = TypeOfLaser.Enemy;
                }
                else
                {
                    laserType = TypeOfLaser.Player;
                }

                EntityManager.CreateLaser(laserType, center, target, damagePerShot);

                fireTimer.Reset(gameTime);
            }
        }
示例#4
0
    //called when something enters the trigger of the object this script is assigned to
    void OnTriggerEnter2D(Collider2D other)
    {
        //if a laser collides with this object
        if (other.gameObject.name.Contains("aser"))
        {
            TypeOfLaser typeOfLaser = other.GetComponent("TypeOfLaser") as TypeOfLaser;

            //if a player or invader has been hit
            if (gameObject.name.StartsWith("Invader") || gameObject.name.Equals("Player"))
            {
                //if it has been hit by the opposite laser
                if (typeOfLaser.getTypeOfLaser() != LaserType.Invader && typeOfLaser.getTypeOfLaser() != LaserType.Player)
                {
                    //take damage
                    damage = other.gameObject.GetComponent("Damage") as Damage;
                    Debug.Log(gameObject.name + "has been hit by a laser of type " + typeOfLaser.getTypeOfLaser().ToString());
                    takeDamage(damage.getDamage());
                }
            }
            else if (gameObject.name.Equals("man"))
            {
                //if the man gets hit
                if (typeOfLaser.getTypeOfLaser() != LaserType.Man)
                {
                    damage = other.gameObject.GetComponent("Damage") as Damage;
                    //play audio
                    audioS.PlayOneShot(deadFX, 0.35F);
                    //take damage
                    takeDamage(damage.getDamage());
                    //destroy laser
                    Destroy(other.gameObject);
                    //pause the game for a second
                    StartCoroutine(pause.Pause(1, true));
                }
            }
            else
            {
                //otherwise, take damage.
                damage = other.gameObject.GetComponent("Damage") as Damage;
                takeDamage(damage.getDamage());
            }
        }
    }
示例#5
0
 public static void CreateLaser(TypeOfLaser type, Vector2 start, Vector2 target, float damage)
 {
     AddLaser(new Laser(start, target, new Vector2(0.1f, Vector2.Distance(start, target)), type, damage, 900, AssetManager.TextureAsset("gradient_bar")));
     //AddBullet(new Bullet(start, target, Vector2.Zero, new Vector2(10, 0.1f/*Vector2.Distance(start, target)*/), type, damage, 1));
 }