// Start is called before the first frame update

    // Update is called once per frame
    public override void FixedUpdate()
    {
        if (!LunerGameManager.Instance.HasGameStarted)
        {
            return;
        }
        if (!LunerGameManager.Instance.IsTransitioning || LunerGameManager.Instance.HasGameEnded)
        {
            if (!LunerGameManager.Instance.HasGameEnded)
            {
                HandleInput(Time.fixedDeltaTime);
            }
            addForce(ForceGenerator2D.GenerateForce_Gravity(Mass, -0.8f, Vector2.up));
            base.FixedUpdate();
            CheckRotation(Time.fixedDeltaTime);
            HandleUpdate(Time.fixedDeltaTime);
        }



        if (fuel <= 0.0f)
        {
            LunerGameManager.Instance.EndGame();
        }
    }
    void GenerateRandomParticle()
    {
        //Update Time Left
        timeLeft      -= Time.deltaTime;
        timerText.text = "Time Left Until Next Particle: " + Mathf.Round(timeLeft) + " seconds";

        //Get Total Random Particles On Screen
        totalRandomParticles = GameObject.FindGameObjectsWithTag("RandomParticle");

        //Generate Random Particle When Time Hits 0
        if (timeLeft <= 0 && totalRandomParticles.Length <= maxParticles)
        {
            Debug.Log("Generating Random Particle");

            //Create Particle
            GameObject randomParticleGen = Instantiate(randomParticle);

            //Set Variables
            randomParticleGen.GetComponent <Target>().SetTargetVariables(randomParticleGen);

            //Transform Position
            randomParticleGen.transform.position = new Vector2(Random.Range(-6, 9), Random.Range(1, 5));

            //Force Generator
            ForceGenerator2D BouyancyGenRandomParticle = forceManager.CreateBouyancyForceGenerator(randomParticleGen, (waterSprite.transform.localScale.y) / 2.0f, 75.0f, 5.0f, -(waterSprite.transform.localScale.y) / 2.0f);
            forceManager.AddForceGenerator(BouyancyGenRandomParticle);
            randomParticleGen.GetComponent <Target>().forceGen = BouyancyGenRandomParticle;

            //Reset Time Left
            timeLeft = 30.0f;
        }
    }
    // Start is called before the first frame update
    void Start()
    {
        forceGen = gameObject.GetComponent <ForceGenerator2D>();
        //manager = GameObject.Find("Manager").GetComponent<Controls>();

        //Set Boundries
        topBoundry    = GameObject.Find("TopBoundry");
        bottomBoundry = GameObject.Find("BottomBoundry");
        leftBoundry   = GameObject.Find("LeftBoundry");
        rightBoundry  = GameObject.Find("RightBoundry");
    }
Exemple #4
0
    public Vector2 variable2; //force used for torque equation
    public void FixedUpdate()
    {
        Particle2D comp = GetComponent <Particle2D>();

        if (testType == TestType.Gravity)
        {
            comp.addForce(ForceGenerator2D.GenerateForce_Gravity(comp.Mass, -9.81f, Vector2.up));
        }
        else if (testType == TestType.Normal)
        {
            comp.addForce(ForceGenerator2D.GenerateForce_Normal(new Vector2(0.0f, -9.81f), variable1));
        }
        else if (testType == TestType.Sliding)
        {
            comp.addForce(ForceGenerator2D.GenerateForce_Sliding(new Vector2(0.0f, -9.81f), variable1));
        }
        else if (testType == TestType.StaticFriction)
        {
            comp.addForce(ForceGenerator2D.GenerateForce_Sliding(new Vector2(0.0f, -9.81f), variable1));
            comp.addForce(ForceGenerator2D.GenerateForce_Friction_Static(variable1, -variable1, 0.8f));
        }
        else if (testType == TestType.KineticFriction)
        {
            comp.addForce(ForceGenerator2D.GenerateForce_Sliding(new Vector2(0.0f, -9.81f), variable1));
            comp.addForce(ForceGenerator2D.GenerateForce_Friction_Kinetic(variable1, comp.getVelocity(), 0.8f));
        }
        else if (testType == TestType.Drag)
        {
            //gravity for testing also applied
            comp.addForce(ForceGenerator2D.GenerateForce_Gravity(comp.Mass, -9.81f, Vector2.up));
            comp.addForce(ForceGenerator2D.GenerateForce_Drag(comp.getVelocity(), Vector2.zero, 0.2f, 100, 0.9f));
        }
        else if (testType == TestType.Spring)
        {
            //gravity for testing also applied
            comp.addForce(ForceGenerator2D.GenerateForce_Gravity(comp.Mass, -9.81f, Vector2.up));
            comp.addForce(ForceGenerator2D.GenerateForce_Spring(comp.position, Vector2.zero, -4.0f, 10.0f));
        }
        else if (testType == TestType.Torque)
        {
            comp.addForceAtPoint(variable1, variable2);
        }
    }
 public override void OnCollision(CollisionHull2D withObject)
 {
     if (LunerGameManager.Instance.HasGameEnded)
     {
         return;
     }
     if (velocity.magnitude > maxVelocityMagnitudeOnLanding || rotation < -maxRotationOffsetOnLanding || rotation > maxRotationOffsetOnLanding)
     {
         LunerGameManager.Instance.ShowTransitionMessage("Game Over");
         LunerGameManager.Instance.EndGame();
     }
     else if (withObject is LunerPlatform)
     {
         if (velocity.magnitude > maxVelocityMagnitudeOnSafeLanding)
         {
             LunerPlatform collidedWith = withObject as LunerPlatform;
             LunerGameManager.Instance.addToScore(collidedWith.score);
             ResetAndShowMessage("Shakey landing, but there in one piece");
         }
         else
         {
             LunerPlatform collidedWith = withObject as LunerPlatform;
             LunerGameManager.Instance.addToScore(collidedWith.score * 1.5f);
             fuel += collidedWith.fuelGained;
             ResetAndShowMessage("Clean Landing, gained fuel and bonus points");
         }
     }
     //all collisions happen below, so if collision occured then lerp the rotation
     addForce(ForceGenerator2D.GenerateForce_Friction_Kinetic(withObject.transform.up, velocity, 2.0f));
     if (rotation > 5.0f)
     {
         torque = -rotationCorrectionForce * (rotation / 360);
     }
     else if (rotation < -5.0f)
     {
         torque = rotationCorrectionForce * (-rotation / 360);
     }
     else
     {
         torque = -rotation * rotationCorrectionForce * Time.deltaTime;
     }
 }
    //Create Target
    void CreateTarget(Vector3 targetPosition)
    {
        //Create Target & Set Position
        GameObject newTarget = Instantiate(target);

        //newTarget.transform.position = new Vector3(-2.75f, 3.26f, 0.0f);
        newTarget.transform.position = targetPosition;

        //Set Variables
        //particleManager.AddParticle(newTarget);
        newTarget.GetComponent <Target>().SetTargetVariables(newTarget);
        ForceGenerator2D bouyancyGenerator = forceManager.CreateBouyancyForceGenerator(newTarget, (waterSprite.transform.localScale.y) / 2.0f, 75.0f, 5.0f, -(waterSprite.transform.localScale.y) / 2.0f);

        forceManager.AddForceGenerator(bouyancyGenerator);
        newTarget.GetComponent <Target>().forceGen = bouyancyGenerator;

        //Update score
        score++;
        scoreText.text = "Score: " + score;
        isTarget       = true;
    }
Exemple #7
0
    // Start is called before the first frame update
    void Start()
    {
        //Set Boundries
        topBoundry    = GameObject.Find("TopBoundry");
        bottomBoundry = GameObject.Find("BottomBoundry");
        leftBoundry   = GameObject.Find("LeftBoundry");
        rightBoundry  = GameObject.Find("RightBoundry");

        //Set Game Manager
        gameManager = GameObject.Find("Player");

        //Get Components
        if (forceGen)
        {
            forceGen = gameObject.GetComponent <ForceGenerator2D>();
        }

        if (particleLink)
        {
            particleLink = gameObject.GetComponent <Particle2DLink>();
        }
    }
    //Shooting Bullets Controls
    void ShootingControls()
    {
        //W - Change Bullet
        if (Input.GetKeyDown(KeyCode.W) == true)
        {
            if (bulletNum >= 3) //Reset back to one if reaches 3
            {
                bulletNum = 1;
            }
            else
            {
                bulletNum += 1;
            }
            Debug.Log("Bullet: " + bulletNum);
        }

        //Creat Bullet
        if (Input.GetKeyDown(KeyCode.Return) == true)
        {
            switch (bulletNum)
            {
            case 1:     //Bullet
                Debug.Log("Bullet");

                //Create Bullet
                GameObject bulletOne = Instantiate(bullet);
                //bulletOne.transform.position = gunEnd.transform.position;

                //Set Variables
                //particleManager.AddParticle(bullet);
                bulletOne.GetComponent <Bullets>().SetBulletVariables(bulletOne, gunEnd);

                //Transform Position
                bulletOne.transform.position = gunEnd.transform.position;
                bulletOne.transform.rotation = gunEnd.transform.rotation;

                //Force Generator
                bulletOne.GetComponent <Bullets>().isForceGen = true;
                ForceGenerator2D BouyancyGen2 = forceManager.CreateBouyancyForceGenerator(bulletOne, (waterSprite.transform.localScale.y) / 2.0f, 75.0f, 5.0f, -(waterSprite.transform.localScale.y) / 2.0f);
                forceManager.AddForceGenerator(BouyancyGen2);
                bulletOne.GetComponent <Bullets>().forceGen = BouyancyGen2;

                break;

            case 2:     //Spring
                Debug.Log("Spring");

                //Set Value
                int numSprings = 1;

                //Create Bullets
                GameObject springOne = Instantiate(springBullet);
                springOne.name = "Spring" + numSprings;
                numSprings++;
                GameObject springTwo = Instantiate(springBullet);
                springTwo.name = "Spring" + numSprings;
                numSprings++;

                //Set Variables
                springOne.GetComponent <Bullets>().SetBulletVariables(springOne, gunEnd);
                springTwo.GetComponent <Bullets>().SetBulletVariables(springTwo, gunEnd);

                //Transform Position
                springOne.transform.position = new Vector2(gunEnd.transform.position.x, gunEnd.transform.position.y);
                springTwo.transform.position = gunEnd.transform.position;
                springOne.transform.rotation = gunEnd.transform.rotation;
                springTwo.transform.rotation = gunEnd.transform.rotation;

                //Force Generator
                springOne.GetComponent <Bullets>().isForceGen = true;
                ForceGenerator2D springGenerator = forceManager.CreateSpringForceGenerator(springOne, springTwo, 1.0f, 10.0f);
                forceManager.AddForceGenerator(springGenerator);
                springOne.GetComponent <Bullets>().forceGen = springGenerator;

                springOne.GetComponent <Bullets>().isForceGen = true;
                ForceGenerator2D BouyancyGenerator = forceManager.CreateBouyancyForceGenerator(springOne, (waterSprite.transform.localScale.y) / 2.0f, 75.0f, 5.0f, -(waterSprite.transform.localScale.y) / 2.0f);
                forceManager.AddForceGenerator(BouyancyGenerator);
                springOne.GetComponent <Bullets>().forceGen = BouyancyGenerator;

                break;

            case 3:     //Rod
                Debug.Log("Rod");

                //Set Value
                int numRods = 1;

                //Particle Link
                GameObject     particleLinkRod  = new GameObject("ParticleLink"); // Don't forget to make the rod u dumb dumb
                Particle2DLink tempParticleLink = particleLinkRod.AddComponent <Particle2DLink>();
                particleLink = tempParticleLink;

                //Create Bullets
                GameObject rodOne = Instantiate(rodBullet);
                rodOne.name = "Rod" + numRods;
                numRods++;
                GameObject rodTwo = Instantiate(rodBullet);
                rodTwo.name = "Rod" + numRods;
                numRods++;

                //Set Variables
                rodOne.GetComponent <Bullets>().SetBulletVariables(rodOne, gunEnd);
                rodTwo.GetComponent <Bullets>().SetBulletVariables(rodTwo, gunEnd);

                //Transform Position
                rodOne.transform.position = new Vector2(gunEnd.transform.position.x, gunEnd.transform.position.y + 1.0f);     //Change y so it doesn't spawn on top of each other
                rodTwo.transform.position = gunEnd.transform.position;
                rodOne.transform.rotation = gunEnd.transform.rotation;
                rodTwo.transform.rotation = gunEnd.transform.rotation;

                //Particle Link
                rodOne.GetComponent <Bullets>().isParticleLink = true;
                Particle2DLink link = particleLink.CreateLink(rodOne, rodTwo, 1.0f);
                rodOne.GetComponent <Bullets>().particleLink = link;

                //Force Generator
                rodOne.GetComponent <Bullets>().isForceGen = true;
                ForceGenerator2D BouyancyGen = forceManager.CreateBouyancyForceGenerator(rodOne, (waterSprite.transform.localScale.y) / 2.0f, 75.0f, 5.0f, -(waterSprite.transform.localScale.y) / 2.0f);
                forceManager.AddForceGenerator(BouyancyGen);
                rodOne.GetComponent <Bullets>().forceGen = BouyancyGen;

                break;
            }
        }
    }
 public static void AddGenerator(ForceGenerator2D gen)
 {
     generatorList.Add(gen);
 }
Exemple #10
0
 public void RemoveForceGen(ForceGenerator2D force)
 {
     forces.Remove(force);
 }
Exemple #11
0
 public void AddForceGen(ForceGenerator2D force)
 {
     forces.Add(force);
 }
Exemple #12
0
 public void DeleteForceGenerator(ForceGenerator2D forceGenerator)
 {
     mForceGenerators.Remove(forceGenerator);
 }
Exemple #13
0
 void AddForceGenerator(ForceGenerator2D forceGenerator)
 {
     mForceGenerators.Add(forceGenerator);
 }
Exemple #14
0
 void DeleteForceGenerator(ForceGenerator2D forceGenerator)
 {
     forceGeneratorsList.Remove(forceGenerator);
 }
Exemple #15
0
 void AddForceGenerator(ForceGenerator2D forceGenerator)
 {
     forceGeneratorsList.Add(forceGenerator);
 }
Exemple #16
0
 public void Delete(ForceGenerator2D generator)
 {
     mGenerators.Remove(generator);
 }
Exemple #17
0
 public void Add(ForceGenerator2D generator)
 {
     mGenerators.Add(generator);
 }
Exemple #18
0
 //Remove Force Generator
 void RemoveForceGenerator(ForceGenerator2D forceGenerator)
 {
     forceGeneratorsAlive.Remove(forceGenerator);
 }
Exemple #19
0
 //Add Force Generator
 public void AddForceGenerator(ForceGenerator2D forceGenerator)
 {
     forceGeneratorsAlive.Add(forceGenerator);
 }