//dont touch IEnumerator Jump(float distance) { Debug.Log(distance); if (jumpRoutine == null) { previousJumpTime = Time.time; state = cacState.JUMPING; float xpos = 0; while (xpos < distance) { xpos += distance / JUMP_FRAMES; transform.position += transform.forward * distance / JUMP_FRAMES; float sinSol = 3f * Mathf.Sin(Mathf.PI / distance * xpos); //float quadSol = (-1f * Mathf.Pow(xpos, 2)) + (distance * xpos); transform.position = new Vector3(transform.position.x, initYPos + sinSol, transform.position.z); yield return(0); } transform.position = new Vector3(transform.position.x, initYPos, transform.position.z); state = cacState.IDLE; } else { Debug.Log("jump called while midair"); } jumpRoutine = null; }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag.Equals("enemy") && (Time.time - previousJumpTime) < JUMP_REFRESH * 2) { state = cacState.ATTACKING; if (jumpRoutine != null) { StopCoroutine(jumpRoutine); } jumpRoutine = null; transform.position = new Vector3(transform.position.x, initYPos, transform.position.z); attack(collision); } }
IEnumerator Charge() { Debug.Log("started charge"); float initTime = Time.time; float outTime = 0; marker.transform.position = transform.position; state = cacState.CHARGING; while (true) { outTime = Time.time - initTime; if (outTime > MAX_POWER) { outTime = MAX_POWER; } outTime *= 12; RaycastHit hit = new RaycastHit(); //Physics.Raycast(transform.position, transform.forward, out hit); Ray r = new Ray(transform.position, transform.forward); Physics.Raycast(r, out hit, 999f, mask); if (hit.collider != null && hit.distance < outTime) { Debug.Log("we are jumping less now"); outTime = hit.distance - 0.8f; //minus some offset } marker.transform.position = transform.position + transform.forward * outTime; if (MOUSE_CONTROLS && Input.GetKeyUp(KeyCode.Mouse0)) { break; } else if (!MOUSE_CONTROLS && Input.GetKeyUp(KeyCode.Space)) { break; } yield return(0); } marker.transform.position += transform.up * 800; IEnumerator jumpCoroutine = Jump(outTime); jumpRoutine = StartCoroutine(jumpCoroutine); }
// Use this for initialization void Start() { MOUSE_CONTROLS = gameObject.GetComponent <controlSettingsHandler>().getMouseControls(); initYPos = transform.position.y; previousJumpTime = 0; mouseInit = Vector3.zero; state = cacState.IDLE; center = new Vector3(Screen.width / 2, Screen.height / 2); midair = false; this.gameObject.GetComponent <Rigidbody>().freezeRotation = true; marker = GameObject.Instantiate(landMarker); marker.transform.position = new Vector3(0, 800, 0); if (MOUSE_CONTROLS) { StartCoroutine("mouseControls"); } else { StartCoroutine("keyboardControls"); } }
public void setIdle() { state = cacState.IDLE; }