Пример #1
0
    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;
    }
Пример #2
0
    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);
    }