예제 #1
0
파일: PlayerLife.cs 프로젝트: VascoUP/Vakuo
    private void Respawn()
    {
        AstronautController controller = gameObject.GetComponent <AstronautController>();

        controller.Respawn();
        AddLifes(maxLifes);
    }
예제 #2
0
    private void TryWhackAstronaut()
    {
        for (int i = 0; i < AstronautController.Instances.Count; ++i)
        {
            AstronautController astro = AstronautController.Instances[i];
            if (astro != this)
            {
                Vector3 toAstro = (astro.transform.position - transform.position).WithY(0);
                if (toAstro.magnitude < 2.5f)
                {
                    if (_hitSound)
                    {
                        AudioManager.Instance.PlaySound(gameObject, _hitSound);
                    }

                    astro.GetWhacked(transform.position);

                    BatteryComponent battery = GetComponent <BatteryComponent>();
                    if (battery != null && battery.HasCharge)
                    {
                        astro.RoomInhabitant.NotifySuckedIntoSpace();
                        battery.DrainCharge();
                    }

                    return;
                }
            }
        }
    }
예제 #3
0
 void Start()
 {
     getMoneyController = GameObject.Find("GetMoney").GetComponent<GetMoneyController>();
     staffController = GameObject.Find("HireStaff").GetComponent<StaffController>();
     astronautController = GameObject.Find("Astronaut").GetComponent<AstronautController>();
     researchersController = GameObject.Find("Researcher").GetComponent<ResearcherController>();
 }
    private void Spawn()
    {
        _astronaut            = Instantiate(_astronautPrefab, transform);
        _astronaut.Died      += OnDied;
        _astronaut.Despawned += OnDespawned;

        PlayerSpawned?.Invoke(this);
    }
예제 #5
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        AstronautController astronaut = collider.GetComponent <AstronautController>();

        if (astronaut)
        {
            GetComponent <UIFadeIn>().Begin();
        }
    }
예제 #6
0
 private void OnTriggerEnter(Collider collider)
 {
     if (collider.gameObject.tag == "Player" && !running)
     {
         AstronautController controller = collider.gameObject.GetComponent <AstronautController>();
         if (controller != null)
         {
             StartCoroutine(KillPlayerOnWater(collider.gameObject));
         }
     }
 }
예제 #7
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.tag == "Player")
     {
         AstronautController controller = collision.gameObject.GetComponent <AstronautController>();
         if (controller != null)
         {
             controller.Jump(_jumpeForce);
         }
     }
 }
예제 #8
0
    private void AddAstronaut()
    {
        Vector3 astronautPos = transform.position;

        astronautPos.y -= 3.0f;
        {
            AstronautController astronautControl = Instantiate(_astronautPrefab, astronautPos, Quaternion.identity).GetComponent <AstronautController>();
            astronautControl._astronautIndex = _listAstronautControl.Count;
            _listAstronautControl.Add(astronautControl);
            astronautControl.gameObject.SetActive(true);
        }
    }
예제 #9
0
    private void Start()
    {
        _targetZoom = new Vector3(_distance, _minHeight, _maxHeight);

        _astronautController = target.GetComponent <AstronautController>();
        if (_astronautController != null)
        {
            float maxDeltaHead = _astronautController.headMaxRotation - _astronautController.headMinRotation;
            float maxDeltaCam  = _maxHeight - _minHeight;
            _headToCamRatio = maxDeltaCam / maxDeltaHead;
        }
    }
예제 #10
0
 protected virtual void AttemptAbduction()
 {
     hasAttemptedAbduction = true;
     astronaut             = FindClosestAstronaut(transform.position);
     if (astronaut != null)
     {
         AstronautController ac = astronaut.GetComponent <AstronautController>();
         if (!ac.beingAbducted && Vector2.Distance(transform.position, astronaut.transform.position) < 20)
         {
             ac.beingAbducted = true;
             abducting        = true;
         }
     }
 }
예제 #11
0
    private IEnumerator KillPlayerOnWater(GameObject player)
    {
        running = true;

        AstronautController controller = player.GetComponent <AstronautController>();
        PlayerLife          pl         = player.GetComponent <PlayerLife>();

        controller._animator.SetBool("damaged", true);

        yield return(new WaitForSeconds(2f));

        controller._animator.SetBool("damaged", false);
        controller.Respawn();
        pl.Kill();

        running = false;
    }
예제 #12
0
    private void CollideWithPlayer(AstronautController astronaut)
    {
        if (_dead || _isPDead)
        {
            return;
        }

        _isInvulnerable = true;
        Vector3 direction = astronaut.transform.position - transform.position;

        direction.y = 0;
        Vector3 nDirection = direction.normalized;

        nDirection.x *= Mathf.Sign(direction.x);
        nDirection.z *= Mathf.Sign(direction.z);

        astronaut.Push(_pushHorizontalSpeed, _pushYSpeed, new Vector3(direction.x, 1, direction.z));

        // Damage astronaut
        _events.onPlayerPushed(astronaut.gameObject, gameObject);
    }
예제 #13
0
    public void OnControllerColliderHit(ControllerColliderHit hit)
    {
        if (hit.gameObject.tag == "Player")
        {
            AstronautController astronaut      = hit.gameObject.GetComponent <AstronautController>();
            PlayerLife          astronautLifes = hit.gameObject.GetComponent <PlayerLife>();
            if (astronaut != null)
            {
                CollideWithPlayer(astronaut);
                DamagePlayer(astronautLifes);
            }
        }

        if (_state == EnemyStates.CHARGE &&
            hit.gameObject.tag != "Ground" &&
            hit.gameObject.tag != "Mountain")
        {
            StopAllCoroutines();
            runningCoroutine = null;
            ChangeState(EnemyStates.FLEE);
        }
    }
예제 #14
0
 void Awake()
 {
     astronautController     = GameObject.FindObjectOfType <AstronautController>();
     UIInformationController = GameObject.FindObjectOfType <UIInformationController>();
     currentState            = GameState.Running;
 }
예제 #15
0
 // Use this for initialization
 void Start()
 {
     m_AstronautController = m_Astronaut.GetComponent <AstronautController>();
     ResetUI();
     DisplayCurrentOxygen();
 }