private void FixedUpdate() { if (stateManager.currentState == "fetch") { if (stateVariables.stickThrown) { rb.AddTorque(-rb.velocity.x / 2); if (transform.position.y <= stateVariables.GetThrowTarget().position.y) { Debug.Log("hit ground"); hitGround = true; rb.velocity = new Vector3(); rb.gravityScale = 0; rb.angularVelocity = 0; rb.freezeRotation = true; } } if (transform.position == stateVariables.GetFetchStartingPoint().position) { Debug.Log("hit ground"); hitGround = true; rb.velocity = Vector3.zero; rb.gravityScale = 0; rb.angularVelocity = 0; rb.freezeRotation = true; } } }
public void Fetch() { if (!pathCancelled) { PathRequestManager.RequestPath(transform.position, transform.position, OnPathFound); PathRequestManager.ClearRequests(); StopAllCoroutines(); pathCancelled = true; } //checking if the stick hasn't been thrown yet, or monty is bringing the stick back (when to move monty to the start point) if (!stateVariables.stickThrown || stateVariables.montyReturningStick) { transform.position = Vector3.MoveTowards(transform.position, stateVariables.GetFetchStartingPoint().position, stateVariables.runSpeed * Time.deltaTime); anim.SetBool("isWalking", false); anim.SetBool("isSitting", false); anim.SetBool("isRunning", true); stateVariables.montyHasStick = false; stateVariables.waitedAtStick = false; if (stateVariables.montyReturningStick) { sprite.flipX = true; } else { sprite.flipX = false; } } //checking if the stick has been thrown (when to move monty towards the stick after being thrown) else if (stateVariables.stickThrown) { transform.position = Vector3.MoveTowards(transform.position, stateVariables.GetThrowTarget().position, stateVariables.runSpeed * Time.deltaTime); cameraHandler.SwitchToMonty(); anim.SetBool("isWalking", false); anim.SetBool("isSitting", false); anim.SetBool("isRunning", true); sprite.flipX = false; } //checking if monty is at the starting point if (transform.position == stateVariables.GetFetchStartingPoint().position) { cameraHandler.SwitchToPlayer(); //Resetting animator and facing in the correct spot //Debug.Log("Monty at stick"); anim.SetBool("isWalking", false); anim.SetBool("isRunning", false); anim.SetBool("isSitting", true); sprite.flipX = true; stateVariables.stickThrown = false; stateVariables.montyHasStick = true; stateVariables.montyReturningStick = false; if (stateVariables.playerHasStick) { //Debug.Log("Disable input"); playerController.DisablePlayerInput(); stateVariables.montyHasStick = false; stateVariables.GetFetchStick().transform.GetChild(0).GetComponent <SpriteRenderer>().enabled = false; } else { //Debug.Log("enable input"); StartCoroutine(playerController.EnablePlayerInput(0)); stateVariables.montyHasStick = true; stateVariables.GetFetchStick().transform.GetChild(0).GetComponent <SpriteRenderer>().enabled = true; } } //checking if monty is at the stick after being thrown if (transform.position == stateVariables.GetThrowTarget().position) { //Debug.Log("At thrown stick"); anim.SetBool("isRunning", false); if (!stateVariables.waitedAtStick) { StartCoroutine(WaitForTime(2)); } } }