Beispiel #1
0
    // Start is called before the first frame update
    void Start()
    {
        for (int i = 0; i < 4; i++)
        {
            GameObject anPlayer;
            if (i == myPlayerIndex)
            {
                anPlayer = Instantiate(playerPrefab, solarSystemTransform);
                GameObject.FindWithTag("MainCamera").GetComponent <DampCamera2D>().target = anPlayer.transform;
            }
            else
            {
                anPlayer = Instantiate(enemyPrefab, solarSystemTransform);
            }
            anPlayer.transform.Find("Planet").Rotate(0, Random.Range(0, 350f), 0);

            OrbitMotion playerOrbitMotion = anPlayer.GetComponent <OrbitMotion>();
            playerOrbitMotion.orbitPath.xAxis = _lastOrbitSize.x += Random.Range(0.4f, 1f); //I hope this works ;)
            playerOrbitMotion.orbitPath.yAxis = _lastOrbitSize.y += Random.Range(0.4f, 1f);
            playerOrbitMotion.orbitProgress   = Random.Range(0f, 1f);
            playerOrbitMotion.orbitPeriod     = Random.Range(15f, 40f);

            playerOrbitMotion.enabled = true; // Runtime enabiling is a workaround for planet mesh being created in WORLD space 0,0,0. Fix this later!
        }
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        GameObject obj = collision.gameObject;

        if (type == "PlayerField" && obj.tag == "Collectable" && obj.GetComponent <OrbitMotion>().orbitActive == false && obj.GetComponent <MoonScript>().releasetimer == 0)
        {
            //Add the moon to the orbit
            obj.transform.parent = parent.transform;
            OrbitMotion newcircle = obj.GetComponent <OrbitMotion>();
            newcircle.orbitPath     = new Ellipse((2f + sizemod) / 2, (2f + sizemod) / 2);
            newcircle.orbitProgress = FindDegree(obj.transform.localPosition.x, obj.transform.localPosition.y) / 360;
            newcircle.orbitActive   = true;
            sizemod += 1f;
            newcircle.orbitPeriod = sizemod + 3f;
            newcircle.enabled     = true;
            //Add the moon to the planet controls
            this.parent.GetComponent <PlayerMovement>().claimedObjects.Add(obj);
            if (this.parent.GetComponent <PlayerMovement>().player == 1)
            {
                obj.transform.GetChild(1).GetComponent <TextMesh>().text = this.parent.GetComponent <PlayerMovement>().claimedObjects.Count.ToString();
            }
            else if (this.parent.GetComponent <PlayerMovement>().player == 2)
            {
                obj.transform.GetChild(1).GetComponent <TextMesh>().text = "N" + this.parent.GetComponent <PlayerMovement>().claimedObjects.Count.ToString();
            }
            updateRange();
        }
    }
Beispiel #3
0
 // Start is called before the first frame update
 void Start()
 {
     _orbitMotion           = GetComponent <OrbitMotion>();
     _trajectoriesContainer = transform.parent.Find("Trajectories");
     _ellipse         = Instantiate(TrajectoryGameObject, _trajectoriesContainer).GetComponent <EllipseRenderer>();
     _ellipse.ellipse = _orbitMotion.orbitPath;
     _ellipse.CalculateEllipse();
 }
    void Awake()
    {
        //This is the Render of the actual Ellipse that will show the orbiting path
        lr = GetComponent <LineRenderer>();
        om = GetComponent <OrbitMotion>();

        ellipse.xAxis = om.orbitPath.xAxis;
        ellipse.yAxis = om.orbitPath.yAxis;

        CalculateEllipse();
    }//End Awake
    public void SetPlanetPositions(GameObject go, Planet p)
    {
        PlanetSelfRotate rotate = go.GetComponent <PlanetSelfRotate>();

        rotate.dampAmt       = p.dampAmt;
        rotate.rotationSpeed = p.rotationSpeed;

        OrbitMotion orbit = go.GetComponent <OrbitMotion>();

        //Sets orbit position to account for time passed while not in solar system scene
        p.orbitProgress       = (((float)PlanetController.instance.timePassed / (float)p.orbitPeriod) + p.orbitProgress) % 1;
        orbit.orbitProgress   = p.orbitProgress;
        orbit.orbitPeriod     = p.orbitPeriod;
        orbit.orbitPath.xAxis = p.orbitPathX;
        orbit.orbitPath.yAxis = p.orbitPathY;
        orbit.orbitPath.zAxis = p.orbitPathZ;

        GameObject planetModelInstance = null;

        if (p.isMoon)
        {
            planetModelInstance = Instantiate(planetModel, new Vector3(0, 0, p.zOffset), Quaternion.identity);

            planetModelInstance.transform.SetParent(go.transform);
            planetModelInstance.GetComponent <Hexsphere>().setWorldScale(
                p.worldScale /
                p.orbiting.worldScale);
        }
        else
        {
            planetModelInstance = Instantiate(planetModel, new Vector3(0, 0, p.zOffset), Quaternion.identity, go.transform);
        }

        planetModelInstance.GetComponent <Hexsphere>().planet   = p;
        planetModelInstance.GetComponent <Hexsphere>().planetID = PlanetController.currentPlanetID++;
        planetModelInstance.GetComponent <Hexsphere>().GroupMaterials_Hex[0]  = PlayerStatController.instance.isUnlocked(p) ? p.planetHexMaterial : p.lockedMaterial;
        planetModelInstance.GetComponent <Hexsphere>().GroupMaterials_Pent[0] = PlayerStatController.instance.isUnlocked(p) ? p.planetPentMaterial : p.lockedMaterial;

        planetModelInstance.GetComponentInChildren <NavigationManager>().pathRenderer = go.GetComponent <LineRenderer>();
        planetModelInstance.name = $"{p.planetName}Model (Instance)";

        orbit.orbitingObject  = planetModelInstance.transform;
        rotate.rotatingObject = planetModelInstance.transform;

        PlanetCenterInfo newPlanet = go.GetComponent <PlanetCenterInfo>();

        newPlanet.planet = p;
    }
    private void OnTriggerExit2D(Collider2D collision)
    {
        GameObject obj = collision.gameObject;

        if (type == "MoonField" && obj.tag == "Projectile" && obj.GetComponent <OrbitMotion>().orbitActive == false && obj.GetComponent <ProjScript>().releasetimer == 0)
        {
            obj.transform.rotation = Quaternion.identity;
            //Add the projectile to the orbit
            obj.transform.parent = parent.transform;
            OrbitMotion newcircle = obj.GetComponent <OrbitMotion>();
            newcircle.orbitPath     = new Ellipse(1f, 1f);
            newcircle.orbitProgress = FindDegree(obj.transform.localPosition.x, obj.transform.localPosition.y) / 360;
            newcircle.orbitPeriod   = 2f;
            newcircle.orbitActive   = true;
            newcircle.enabled       = true;
            //Add the projectile to the moon list
            this.parent.GetComponent <MoonScript>().claimedObjects.Add(obj);
        }
    }
Beispiel #7
0
 /// <summary>
 /// We are simply creating a reference to whatever object it is that we currently have selected. (Must have Orbitmotion.cs compenent)
 /// </summary>
 void OnEnable()
 {
     orbMotion = (OrbitMotion)target;
 }
Beispiel #8
0
    public void onClick()
    {
        smass  = massField.text;
        stemp  = tempField.text;
        sradio = radioField.text;

        mass  = int.Parse(smass);
        temp  = int.Parse(stemp);
        radio = int.Parse(sradio);

        if (!hasStar || (!parameterStarOK(mass, temp, radio)))
        {
            Debug.Log("Entrou if1");

            if (!parameterStarOK(mass, temp, radio) || numPlanets >= MAXN_PLANETS)
            {
                text.text = "Planets can have a surface with low temperature." +
                            " Interesting notice that they can have their nucleo with" +
                            " higher temperatures.For exemple, here in our Solar System" +
                            " there is Neptune with - 218 ºC in his atmosphere, but has a" +
                            " much hotter nucleo around 7000ºC";
            }

            else
            {
                //start value of SUN

                //sun.GetComponent<BehaviourScript>().mass = mass;
                //sun.GetComponent<BehaviourScript>().temp = temp;
                //sun.GetComponent<BehaviourScript>().radio = radio;


                text.text = "\n\nStar Created!";


                // create new SUN


                sun = Instantiate(corChoose(temp), new Vector3(0, 0, 0), new Quaternion(0, 0, 0, 100));
                sun.transform.localScale = (new Vector3(1, 1, 1)) * radio;
                sun.AddComponent <HeavenlyBody>();

                //Instantiate(go[0], new Vector3(0, 0, 0), new Quaternion(0, 0, 0, 100));
                hasStar = true;

                GameObject.Find("CreateButton").GetComponentInChildren <Text>().text = "Create Planet!";
            }


            // GameObject.Find("CreateStar").SetActive(false);
        }
        else
        {
            //there is a star and we know parameters is ok


            smassP = massField.text;
            stempP = tempField.text;

            sradioP = radioField.text;



            massP = int.Parse(smassP);
            tempP = int.Parse(stempP);


            radioP = int.Parse(sradioP);


            if (parameterPlanetOk(massP, tempP, radioP))
            {
                // create this new planet

                go[numPlanets] = Instantiate(planet, new Vector3(orbit, 0, orbit), new Quaternion(0, 0, 0, 0));
                orbit         += 50;

                // set values of my new planet

                go[numPlanets].transform.localScale = (new Vector3(1, 1, 1)) * radioP;
                go[numPlanets].AddComponent <HeavenlyBody>();
                OrbitMotion temp = go[numPlanets].AddComponent <OrbitMotion>();
                temp.orbitPath = new Ellipse(go[numPlanets].transform.position.x, go[numPlanets].transform.position.z);


                numPlanets++;
                text.text = "Planet Created!";
            }
            else
            {
                text.text = "Impossible! Heaven is our limit";
            }
        }
    }
 void Start()
 {
     motion = GetComponent <OrbitMotion>();
     transform.eulerAngles = new Vector3(0, 0, axialTilt);
 }