private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { return; } if (daggerState == DaggerState.Flying) { flightVector = new Vector2(myRigidbody.velocity.x, -fallSpeed); AudioManager.instance.PlaySfx("Collide"); if (collision.tag == "Ground") { daggerState = DaggerState.Colided; AudioManager.instance.PlaySfx("Hit"); } } else if (daggerState == DaggerState.Colided) { flightVector = new Vector2(0f, 0f); myAnimator.speed = 0f; } FlowerBase flower = collision.GetComponentInParent <FlowerBase>(); if (flower != null) { flower.OnAttack(); } }
IEnumerator Retract() { State = DaggerState.Retracting; target = Vector3.zero; TargetRigidbody = null; rigidbody.isKinematic = false; var retractionForce = (Vector3.up + transform.forward * -1f).normalized * RETRACT_POP_FORCE; rigidbody.AddForce(retractionForce, ForceMode.Impulse); audio.PlayOneShot(sounds.retract); yield return(new WaitForSeconds(0.5f)); rotationParent.localRotation = Quaternion.AngleAxis(180f, Vector3.up); rigidbody.isKinematic = true; while (!MoveToTarget(originalParent.position, RETRACT_SPEED)) { yield return(null); } State = DaggerState.Holstered; transform.parent = originalParent; transform.localPosition = Vector3.zero; transform.localRotation = originalRotation; rotationParent.localRotation = Quaternion.identity; rope.enabled = false; }
public void WillGrab() { if (State != DaggerState.Holstered) { return; } State = DaggerState.WillGrab; }
private void OnCollisionEnter2D(Collision2D collision) { daggerState = DaggerState.Colided; if (daggerState == DaggerState.Colided) { flightVector = new Vector2(0f, 0f); myAnimator.speed = 0f; } }
public void ResetDagger() { myAnimator.SetBool("Flight", false); myCollider.enabled = false; daggerState = DaggerState.Held; flightVector = new Vector2(0f, 0f); myAnimator.speed = 1f; flightTime = 0f; renderer.sharedMaterial.SetColor("_EmissionColor", daggerEmission[0]); }
public void Attack() { if (daggerState == DaggerState.Colided) { return; } myAnimator.SetBool("Attack", true); myAnimator.speed = 1f; daggerState = DaggerState.Attacked; }
public void Grab(Transform hand) { if (State != DaggerState.WillGrab) { return; } State = DaggerState.Grabbed; transform.parent = hand; transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.identity; }
IEnumerator Fire() { var ray = camera.ScreenPointToRay(Mouse.current.position.ReadValue()); RaycastHit hit; if (!Physics.Raycast(ray, out hit, RANGE, mask) || Vector3.Distance(hit.point, transform.position) <= PICKUP_RADIUS) { State = DaggerState.Holstered; yield break; } State = DaggerState.Firing; transform.parent = null; target = hit.point; rope.enabled = true; interceptTrigger.enabled = true; audio.PlayOneShot(sounds.fire); while (interceptTrigger.enabled && !MoveToTarget(target, TRAVEL_SPEED)) { rotationParent.Rotate(Vector3.forward, TRAVEL_ROTATION * Time.deltaTime, Space.Self); yield return(null); } State = DaggerState.Embedded; interceptTrigger.enabled = false; if (TargetRigidbody == null) { TargetRigidbody = hit.rigidbody; } if (TargetRigidbody && TargetRigidbody.tag == "Enemy") { TargetRigidbody.GetComponentInParent <Guard>().Die(); } embedDistance = Vector3.Distance(originalParent.position, target) + EMBED_EXTRA_SLACK_DISTANCE; }
public void Throw(bool flightDirection) { if (daggerState == DaggerState.Colided) { return; } if (flightDirection) { flightVector = Vector2.left * flightSpeed; } else { flightVector = Vector2.right * flightSpeed; } daggerState = DaggerState.Flying; myAnimator.SetBool("Flight", true); myAnimator.speed = 1f; }
private void Awake() { flightVector = new Vector2(0f, 0f); daggerState = DaggerState.Colided; renderer.sharedMaterial.SetColor("_EmissionColor", daggerEmission[0]); }