Ejemplo n.º 1
0
    private IEnumerator ShipLaunch()
    {
        shipState = SpaceShipState.LAUNCHING;

        Vector3 startPos = rigidbody.position;
        float   timer    = 0f;

        while (true)
        {
            yield return(new WaitForFixedUpdate());

            timer += Time.fixedDeltaTime;

            float height = (timer / launchTime) * launchHeight;
            rigidbody.MovePosition(startPos + Vector3.up * height);

            if (timer > launchTime)
            {
                break;
            }
        }
        SetRigidbodyFlying();

        shipState = SpaceShipState.FLYING;
    }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        SpaceShipHandle();

        if (spaceShipState != SpaceShipState.Burning)
        {
            if ((transform.position - Camera.main.transform.position).magnitude > OffsetDestroy)
            {
                Destroy(this.gameObject);
                RespawnSpaceship(Respawn);
            }
            else if (spaceShipPreState == SpaceShipState.Fire)
            {
                spaceShipPreState = spaceShipState = SpaceShipState.Normal;
            }
            else if (spaceShipPreState == SpaceShipState.Normal)
            {
                spaceShipPreState = spaceShipState = SpaceShipState.Fire;
            }

            if (spaceShipState == SpaceShipState.Launch)
            {
                spaceShipState = SpaceShipState.Normal;
            }
            SpaceShipRandomControl();
        }
    }
Ejemplo n.º 3
0
    private void SpaceShipRandomControl()
    {
        RandomControlTick += Time.deltaTime;

        if ((Target == null) || ((Target.transform.position - transform.position).magnitude < 6f))
        {
            StateRate = RandomControlTick;
        }

        if (RandomControlTick >= StateRate)
        {
            StateRate         = Random.Range(StateRateMin, StateRateMax);
            RandomControlTick = 0;
            float random = Random.Range(0f, 1f);
            if (random < RateLaunch)
            {
                spaceShipState = SpaceShipState.Launch;
                GameObject[] list = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));
                Target = list[Random.Range(0, list.Length - 1)];
            }
            else if (random < RateFire)
            {
                spaceShipState = SpaceShipState.Fire;
                GameObject[] list = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));
                Target = list[Random.Range(0, list.Length - 1)];
            }
            else
            {
                spaceShipState = SpaceShipState.Normal;
                GameObject[] list = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));
                Target = list[Random.Range(0, list.Length - 1)];
            }
            //Debug.Log(spaceShipState + " " + Target);
        }
    }
Ejemplo n.º 4
0
	// Use this for initialization
	protected void Awake () {
        myCollider = GetComponent<Collider>();
        ai = GetComponent<SeekingWanderAI>();
        scaleUnitWrapper = GetComponent<ScaleUnitWrapper>();
        Assert.IsTrue(myCollider && myCrosshair && scaleUnitWrapper);
        myCrosshair.transform.localPosition = new Vector3(0, myCrosshair.transform.localPosition.y, 0);
        hitPoints = maxHitPoints;
        shipState = SpaceShipState.Inactive;
        dead = GameObject.Find("enemy_explosion").GetComponent<AudioSource>();
        ai.BaseSpeed = maxBaseSpeed;
        ai.TurnSpeed = maxTurnSpeed;

	}
Ejemplo n.º 5
0
    private IEnumerator Land(Vector3 landingPosition)
    {
        shipState = SpaceShipState.LANDING;
        SetRigidbodyLanded();

        Vector3 startingPosition = rigidbody.position;
        float   timer            = 0f;

        while (timer < landingTime)
        {
            yield return(null);

            timer += Time.fixedDeltaTime;
            rigidbody.MovePosition(Vector3.Lerp(startingPosition, landingPosition, timer / landingTime));
        }

        shipState = SpaceShipState.LANDED;
    }
Ejemplo n.º 6
0
    void Update()
    {
        switch (PlayerClickHandle.ClickEvent)
        {
        case PlayerClickHandle.ClickState.Click:
            if (spaceShipState == SpaceShipState.Normal)
            {
                spaceShipState = SpaceShipState.Shoot;
            }
            break;

        case PlayerClickHandle.ClickState.LongPress:
            spaceShipState = SpaceShipState.Arming;
            break;

        case PlayerClickHandle.ClickState.DoubleClick:
            if (spaceShipState == SpaceShipState.Fire)
            {
                spaceShipPreState = spaceShipState = SpaceShipState.Normal;
            }
            else if (spaceShipState == SpaceShipState.Normal)
            {
                spaceShipPreState = spaceShipState = SpaceShipState.Fire;
            }
            break;

        default:
            if (spaceShipState == SpaceShipState.Arming)
            {
                spaceShipState = SpaceShipState.Launch;
            }
            else if (spaceShipState == SpaceShipState.Launch)
            {
                spaceShipState = spaceShipPreState;
            }
            else if (spaceShipState == SpaceShipState.Shoot)
            {
                spaceShipState = SpaceShipState.Normal;
            }
            break;
        }

        SpaceShipHandle();
    }
Ejemplo n.º 7
0
 void OnCollisionEnter(Collision col)
 {
     if (spaceShipState != SpaceShipState.Burning)
     {
         if (col.gameObject.tag == "BULLET")
         {
             Destroy(gameObject, BurningTime + 0.5f);
             Destroy(col.gameObject);
             spaceShipState   = SpaceShipState.Burning;
             TimeStickDestroy = BurningTime;
         }
         else if (col.gameObject.tag == "MISSILE")
         {
             Destroy(gameObject, BurningTime + 0.5f);
             Destroy(col.gameObject);
             spaceShipState   = SpaceShipState.Burning;
             TimeStickDestroy = BurningTime;
         }
     }
 }
Ejemplo n.º 8
0
 public void Spawn(Vector3 spawnLoc)
 {
     shipState = SpaceShipState.Alive;
     spawnLocation = spawnLoc;
     startSpawnLocation = spawnLocation + startSpawnOffset;
     transform.position = startSpawnLocation;
     scaleUnitWrapper.Scale(false);
     gameObject.SetActive(true);
     if (ai)
     {
         ai.enabled = false;
     }
 }
Ejemplo n.º 9
0
 protected virtual void Explode()
 {
     if (shipState == SpaceShipState.Dead || shipState == SpaceShipState.Inactive)
     {
         Debug.LogError("Spaceship was already dead!");
         return;
     }
     //Debug.Log(this.name + " Blew up!");
     // Play animation
     if (explosionAnimation)
     {
         GameObject explosion = Instantiate(explosionAnimation, transform.position, transform.rotation) as GameObject;
         explosion.GetComponentInChildren<SpriteAnimator>().play = true;
     }
     else
         Debug.LogError("There's no explosion prefab referenced!");
     // Kill object
     shipState = SpaceShipState.Dead;
     if (parentWave)
         parentWave.NotifySpaceShipDied(this);
     SetInactive();
     //Destroy(this.gameObject);
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Set this object as inactive for future use
 /// </summary>
 public void SetInactive()
 {
     shipState = SpaceShipState.Inactive;
     gameObject.SetActive(false);
 }
Ejemplo n.º 11
0
 private void Start()
 {
     spaceShipState    = SpaceShipState.Normal;
     spaceShipPreState = SpaceShipState.Normal;
 }