Esempio n. 1
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        // 吃掉食物,并且重新生成食物,而且还有20%的几率生成奖励 Reward
        if (collision.gameObject.CompareTag("Food"))
        {
            Destroy(collision.gameObject);
            mainUIController.UpdateScoreAndLength();

            // 20% 的几率生成 Reward
            foodMaker.MakeFoods((Random.Range(0, 100) < 20 ? true : false));

            // 吃掉食物生成蛇身
            SnakeBodySpawn();
        }
        else if (collision.gameObject.CompareTag("Reward"))
        {
            Destroy(collision.gameObject);
            mainUIController.UpdateScoreAndLength(Random.Range(20, 200));

            // 吃掉食物生成蛇身
            SnakeBodySpawn();
        }
        else if (collision.gameObject.CompareTag("SnakeBody"))
        {
            Die();
        }
        else
        {
            // 有边界撞墙直接死亡
            if (mainUIController.isBorder == true)
            {
                Die();
            }
            else
            {
                switch (collision.gameObject.name)
                {
                case "Up":
                    transform.localPosition = new Vector3(transform.localPosition.x,
                                                          -transform.localPosition.y + 30, transform.localPosition.z);
                    break;

                case "Down":
                    transform.localPosition = new Vector3(transform.localPosition.x,
                                                          -transform.localPosition.y - 30, transform.localPosition.z);
                    break;

                case "Left":
                    transform.localPosition = new Vector3(-transform.localPosition.x + 120,
                                                          transform.localPosition.y, transform.localPosition.z);
                    break;

                case "Right":
                    transform.localPosition = new Vector3(-transform.localPosition.x + 180,
                                                          transform.localPosition.y, transform.localPosition.z);
                    break;
                }
            }
        }
    }