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); } }
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(); } }