private void Update() { switch (_state) { case AlienState.Idle: if (Random.Range(0, 100) < 5) { State = AlienState.Walking; } break; case AlienState.Walking: float distance = Vector3.Distance(transform.position, transform.parent.position); transform.position = transform.parent.position; transform.Rotate(new Vector3(0, 0, 10 * Time.deltaTime), Space.Self); transform.position = transform.parent.position + transform.up * distance; if (_timer >= _currentTimeToWalk) { int rand = Random.Range(0, 10000); if (rand < 2) { Spaceship.Intent intent = GetIntent(); if (intent != Spaceship.Intent.None) { OriginPlanet.Data.TechResource -= 10; GameController.Instance.InstantiateRocketShip(this, intent); _state = AlienState.InShip; } } else if (rand < 100) { State = AlienState.Applauding; } else if (rand < 200) { State = AlienState.Idle; } } break; case AlienState.Applauding: if (_timer >= _timeToApplaud) { State = AlienState.Idle; } break; case AlienState.Angry: break; } _timer += Time.deltaTime; }
public void InstantiateRocketShip(Alien alienThatWantsToTravel, Spaceship.Intent intent) { var ship = PrefabController.Instance.GetPrefabInstance <Spaceship>(PrefabType.Spaceship); _spaceShips.Add(ship); ship.transform.position = alienThatWantsToTravel.transform.position; ship.transform.up = alienThatWantsToTravel.transform.up; ship.transform.position -= ship.transform.up * 1.0f; alienThatWantsToTravel.transform.parent = alienThatWantsToTravel.transform; alienThatWantsToTravel.transform.localPosition = Vector3.zero; ship.transform.parent = alienThatWantsToTravel.transform; ship.TakeOff(alienThatWantsToTravel.OriginPlanet, _universe.Planets[UnityEngine.Random.Range(0, _universe.Planets.Count)], intent); ship.Alien = alienThatWantsToTravel; _rocketCam.ShowShip(ship.transform); }