예제 #1
0
    private void Start()
    {
        base.Initial();
        Animator animator;

        animator = GetComponent <Animator>();

        #region 设置角色控制器的大小
        control        = GetComponent <CharacterController>();
        control.center = new Vector3(0, 1, 0);
        control.height = 2;
        control.radius = 0.23f;
        #endregion

        #region 添加动画
        PlayerIdel playerIdel = new PlayerIdel(animator);
        fsmManager.AddState(playerIdel);
        PlayerWalk playerWalk = new PlayerWalk(animator);
        fsmManager.AddState(playerWalk);
        PlayerRun playerRun = new PlayerRun(animator);
        fsmManager.AddState(playerRun);
        PlayerAttack playerAttack = new PlayerAttack(animator);
        fsmManager.AddState(playerAttack);
        PlayerAttacked playerAttacked = new PlayerAttacked(animator, this);
        fsmManager.AddState(playerAttacked);
        PlayerDie playerDie = new PlayerDie(animator);
        fsmManager.AddState(playerDie);
        #endregion
    }
예제 #2
0
    private void Update()
    {
        if (_hunger >= _maxHungerLavel)
        {
            TakeInfoAboutPlayer(false);
            PlayerDie?.Invoke();
            _isLife = false;
        }

        if (!_sewageTreatment.CheckCountWater)
        {
            TakeInfoAboutPlayer(false);
            PlayerDie?.Invoke();
            _isLife = false;
        }

        if (_hunger >= _alertHungerLavel)
        {
            PlayerHungry?.Invoke(true);
        }
        else
        {
            PlayerHungry?.Invoke(false);
        }
    }
예제 #3
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
예제 #4
0
    // Start is called before the first frame update
    void Start()
    {
        body      = GetComponent <Rigidbody2D>();
        playerDie = GetComponent <PlayerDie>();

        teleportCircleScript = teleportCircle.GetComponent <TeleportCircle>();
        teleportCircleScript.SetRadius(teleportRadius);
    }
    private void OnLevelInitialized()
    {
        _playerDie = FindObjectOfType <PlayerDie>();
        _treasure  = FindObjectOfType <Treasure>();

        _playerDie.PlayerDied       += OnPlayerDied;
        _treasure.TreasureCollected += OnTreasureCollected;
    }
예제 #6
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.CompareTag("Player") && !collision.gameObject.GetComponent <PlayerDie>().isDead)
     {
         PlayerDie player = collision.gameObject.GetComponent <PlayerDie>();
         player.Die();
     }
 }
예제 #7
0
    void Start()
    {
        animator = GetComponent<Animator>();
        character = GetComponent<Character>();
        controller = GetComponent<Controller>();
        playerDie = GetComponent<PlayerDie>();
        playerSlot = GetComponent<PlayerSlot>();
        weapon = GetComponent<Weapon>();

        weapon.WeaponInfo();
    }
예제 #8
0
        protected override bool UseItem(Collider2D playerCollision)
        {
            PlayerDie diePlayer = playerCollision.GetComponent <PlayerDie>();

            if (!diePlayer.IsShield)
            {
                diePlayer.ActivateShield();
                return(true);
            }

            return(false);
        }
예제 #9
0
 private void OnTriggerStay2D(Collider2D collision)
 {
     if (collision.gameObject.CompareTag("Player") && !collision.gameObject.GetComponent <PlayerDie>().isDead)
     {
         if (timeTillExplosion <= 0)
         {
             //   Debug.Log("OnTriggerSTAycircle");
             PlayerDie player = collision.gameObject.GetComponent <PlayerDie>();
             player.Die();
         }
     }
 }
예제 #10
0
        private void OnCollisionEnter2D(Collision2D collision)
        {
            if (collision.gameObject.CompareTag("Player"))
            {
                //This works for inactive player
                Debug.Log("hitting player");

                if (isBallEnemy)
                {
                    player        = collision.gameObject.GetComponent <PlayerDie>();
                    canKillPlayer = true;
                }
            }
        }
예제 #11
0
    /// <summary>
    /// Start the lose update logic in a coroutine.
    /// </summary>
    /// <returns>Default coroutine return value.</returns>
    public IEnumerator Lose()
    {
        Pause        = true;
        GameIsEnding = true;
        Lives--;

        PlayerDie.Play();

        //if (Lives > 0)
        {
            string tBlame = "You lose";
            MiddleText.text = tBlame;
            MiddleText.CrossFadeAlpha(1f, 0.5f, true);
        }

        while (Characters[0].transform.localScale.x > 0f)
        {
            Characters[0].transform.localScale -= new Vector3(0.05f, 0f, 0f);

            yield return(null);
        }
        Characters[0].transform.localScale = Vector3.zero;

        yield return(new WaitForSeconds(WaitBeforeLevelReload - 0.5f));

        //if (Lives > 0)
        {
            MiddleText.CrossFadeAlpha(0f, 0.5f, true);
        }
        yield return(new WaitForSeconds(0.5f));

        if (Lives > 0)
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }
        else
        {
            StartCoroutine(GameOver(CharacterMovementScripts[0].GetBlocks()));
        }
    }
예제 #12
0
        void CheckRayCasts()
        {
            //   Debug.DrawRay(transform.position, Vector2.right, Color.green, distance);
            RaycastHit2D hitPlayerInFront;
            RaycastHit2D rightHit;

            if (platform.isFacingRight)
            {
                hitPlayerInFront = Physics2D.Raycast(transform.position, Vector2.right, distanceToChase, (playerLayer | otherPlayerLayer));
                rightHit         = Physics2D.Raycast(transform.position, Vector2.right, distanceToKill, (playerLayer | otherPlayerLayer));
            }
            else
            {
                hitPlayerInFront = Physics2D.Raycast(transform.position, -Vector2.right, distanceToChase, (playerLayer | otherPlayerLayer));
                rightHit         = Physics2D.Raycast(transform.position, -Vector2.right, distanceToKill, (playerLayer | otherPlayerLayer));
            }

            if (hitPlayerInFront.collider != null)
            {
                isHittingPlayer = true;
                //This is only working on Actie Players
                Debug.Log("os Hitting Player");
            }
            else
            {
                isHittingPlayer = false;
            }
            if (!isBallEnemy)
            {
                if (rightHit.collider != null)
                {
                    player        = rightHit.collider.gameObject.GetComponent <PlayerDie>();
                    canKillPlayer = true;
                }
                else
                {
                    canKillPlayer = false;
                }
            }
        }
예제 #13
0
 private void Start()
 {
     player           = GetComponent <PlayerDie>();
     squeezeAnimation = new SqueezeAnimation(transform);
 }
예제 #14
0
 void Start()
 {
     health             = GetComponent <HealthController>();
     despawn            = GetComponent <PlayerDie>();
     despawn.OnDespawn += HandleDespawn;
 }
예제 #15
0
 void Start()
 {
     go_PlayerDie = go_Player.GetComponent <PlayerDie>();
     radius       = rect_Background.rect.width * 0.5f;
 }
예제 #16
0
 private void Start()
 {
     player = GetComponent <PlayerDie>();
 }
예제 #17
0
 private void Start()
 {
     this.temperature = this.temperatureMax;
     this.playerDie   = GetComponent <PlayerDie>();
 }