示例#1
0
        private void InvokeSpecial(Shell.ShellType shellType)
        {
            Debug.Log("Special");
            switch (shellType)
            {
            case Shell.ShellType.Basic:
                break;

            case Shell.ShellType.Helmet:
                Debug.Log("Helmet Special");
                animator.SetTrigger(HelmetSpecial);
                break;

            case Shell.ShellType.Anemone:
                animator.SetTrigger(AnemoneSpecial);
                break;

            case Shell.ShellType.Lamp:
                animator.SetTrigger(LampSpecial);
                dashRemaining = 5.0f / 6.0f;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(shellType), shellType, null);
            }
        }
示例#2
0
    void Update()
    {
        if (_dead)
        {
            return;
        }

        if (Input.GetButtonDown("Use"))
        {
            if (ShellType == Shell.ShellType.None)
            {
                var colliders = Physics2D.OverlapBoxAll(transform.position, _boxCollider.size, 0, ShellLayer);
                if (colliders.Length > 0)
                {
                    Collider2D closest = colliders.OrderBy(x => (x.transform.position - transform.position).sqrMagnitude).First();
                    GameObject shellObject = closest.gameObject;
                    SpriteRenderer spriteRenderer = shellObject.GetComponent<SpriteRenderer>();
                    Shell shell = shellObject.GetComponent<Shell>();

                    ShellType = shell.Type;
                    ShellSpriteRenderer.sprite = spriteRenderer.sprite;

                    Destroy(shellObject);

                    _audioSource.PlayOneShot(equip);

                    if (ShellType == Shell.ShellType.Heavy)
                    {
                        _rigidbody.mass = 6;
                    }
                    else
                    {
                        _rigidbody.mass = 4;
                    }

                    if (ShellType == Shell.ShellType.Shiny)
                    {
                        _light = Instantiate(LightPrefab, ShellSocket);
                    }
                }
            }
            else
            {
                GameObject shellObject = Instantiate(ShellPrefab);
                shellObject.transform.position = ShellSocket.position - ShellSocket.position.z * Vector3.forward;

                SpriteRenderer spriteRenderer = shellObject.GetComponent<SpriteRenderer>();
                spriteRenderer.sprite = ShellSpriteRenderer.sprite;
                Shell shell = shellObject.GetComponent<Shell>();
                shell.Type = ShellType;

                if (ShellType == Shell.ShellType.Heavy)
                {
                    shell.GetComponent<Rigidbody2D>().mass = 3;
                }
                if (ShellType == Shell.ShellType.Shiny)
                {
                    Instantiate(LightPrefab, shellObject.transform);
                    Destroy(_light);
                }

                ShellType = Shell.ShellType.None;
                ShellSpriteRenderer.sprite = null;
                _rigidbody.mass = 3;

                _audioSource.PlayOneShot(unequip);
            }
        }

        if (transform.position.y < -12)
        {
            if (!_audioSource.isPlaying)
            {
                _audioSource.PlayOneShot(fall);
            }
        }
        if (transform.position.y < -20)
        {
            Die();
        }
    }