public IEnumerator BreakPlayer(float breakValue) { //print("clicked"); IsAnimator.SetBool(MOVING, false); IsAnimator.SetBool(STOP, true); Hold_timer += Time.deltaTime; //print("Stop"); // StopCoroutine("MovePlayer"); if (breakValue > 0 && is_hold) { float elapsedTime = 0; while (elapsedTime < max_Hold) { //Untuk berhenti CanoeBody.velocity = Vector2.zero; // Movement elapsedTime += Time.deltaTime; if (CanoeBody.velocity == Vector2.zero) { isMoving = false; MoveBoatSplash.Stop(); } //isMoving = (elapsedTime >= MaxAnimTime) ? true : false; breakValue -= Time.deltaTime; yield return(null); } } }
public IEnumerator MovePlayer(float moveSpeed) { // yield return new WaitForSeconds(0.1f * multiplier); //print("move"); // Vector3 startingPos = transform.position; // Vector3 finalPos = transform.position + (transform.right * MoveSpeed); float elapsedTime = 0; // print("MOVE"); float directMove = 1; //dikali canoe speed dan dibagi canoe weight nantinya if (MoveSpeedInWater <= 0) { directMove = 0.5f; } else { directMove = MoveSpeedInWater; } while (elapsedTime < MaxAnimTime) { //Untuk pergerakan isMoving = true; MoveBoatSplash.Play(); //print((directMove + moveSpeed + ((canoeSpeed / canoeWeight) * 5))); //SSTools.ShowMessage(((directMove + moveSpeed + (((canoeSpeed / canoeWeight) * 2) + multiplier) / 3) / 2).ToString(), SSTools.Position.bottom, SSTools.Time.twoSecond); CanoeBody.AddForce(new Vector2(((directMove + moveSpeed + (((canoeSpeed / canoeWeight) * 2) + multiplier) / 3) / 2 * Time.deltaTime), 0), ForceMode2D.Impulse); // Movement //MovementSpeedInWater kecepatan canoe berdasarkan deras air atau bisa ditambah dengan moveSpeed kecepatan dari player, seperti dibawah ini /*CanoeBody.MovePosition(transform.position + transform.right * ((MoveSpeedInWater + moveSpeed) * Time.deltaTime)); */ elapsedTime += Time.deltaTime; yield return(null); } if (elapsedTime >= MaxAnimTime) { yield break; } //IsAnimator.SetBool(IDLE, true); //IsAnimator.SetBool(MOVING, false); }
private void TouchScreen() { if (!IsMoving) { IsAnimator.SetBool(IDLE, true); if (IsAnimator.GetBool(IDLE) && !IsAnimator.GetBool(MOVING)) { IdleTimer += Time.deltaTime; // print(IdleTimer); if (IdleTimer >= MaxTouchWait) { multiplier = 1; IsAnimator.SetFloat("MoveMultiplier", multiplier); IdleTimer = 0f; if (!playerTimeMode) { if (multiplier.Equals(1)) { Animator StmUI = StaminaUI.GetComponent <Animator>(); StmUI.SetBool("LimitReached", false); Attention.GetComponent <Image>().enabled = false; Stamina.fillAmount = 0; StaminaUI.GetComponent <Canvas>().enabled = false; } } } } else { IdleTimer = 0f; } IsAnimator.SetBool(MOVING, false); IsAnimator.SetBool(STOP, false); MoveBoatSplash.Stop(); } if (Input.GetMouseButton(0) || Input.touchCount > 0 && !(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))) { if (Input.GetMouseButtonDown(0) || Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { one_click = true; timer_for_double_click = Time.time; //Debug.Log("Not Touched the UI"); if (!is_hold) { //movement pertama if (!playerTimeMode) { StaminaUI.GetComponent <Canvas>().enabled = true; } IsAnimator.SetBool(STOP, false); IsAnimator.SetBool(IDLE, false); IsAnimator.SetBool(MOVING, true); IsAnimator.SetTrigger("IsMove"); if (!speedLimiter(IsAnimator.GetFloat("MoveMultiplier"))) { //print("jalan"); multiplier += 0.37f; IsAnimator.SetFloat("MoveMultiplier", multiplier); StartCoroutine(MovePlayer(MoveSpeedInWater)); if (!playerTimeMode) { Stamina.fillAmount = multiplier / maxmultiplier; } } else { if (!playerTimeMode) { Animator StmUI = StaminaUI.GetComponent <Animator>(); StmUI.SetBool("LimitReached", true); Attention.GetComponent <Image>().enabled = true; TakeDamage(0.5f); } IsAnimator.SetFloat("MoveMultiplier", multiplier); StartCoroutine(MovePlayer(MoveSpeedInWater)); } //one_click = false; } } //if (Input.GetTouch(0).phase == TouchPhase.Ended) //{ // IsAnimator.SetBool(IDLE, true); // IsAnimator.SetBool(MOVING, false); // IsAnimator.SetBool(STOP, false); // is_hold = false; // acumTime = 0; //} //Double tap if (Input.GetMouseButton(0) || Input.touchCount == 1) { if (Application.platform == RuntimePlatform.Android) { Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Ended) { is_hold = false; TapCount += 1; } if (TapCount == 1) { NewTime = Time.time + MaxDubbleTapTime; //jika terlalu lama hold / stop if (one_click) { // if the time now is delay seconds more than when the first click started. if ((Time.time - timer_for_double_click) < delay) { //print("One Hold Time Safe"); //movement kedua IsAnimator.SetBool(STOP, false); IsAnimator.SetBool(IDLE, false); IsAnimator.SetBool(MOVING, true); IsAnimator.SetTrigger("IsMove"); if (!speedLimiter(IsAnimator.GetFloat("MoveMultiplier"))) { multiplier += 0.25f; IsAnimator.SetFloat("MoveMultiplier", multiplier); StartCoroutine(MovePlayer(MoveSpeedInWater)); } else { Stamina.fillAmount = multiplier / maxmultiplier; } is_hold = false; one_click = false; } } Hold_timer = 0f; } else if (TapCount == 2) { //Whatever you want after a dubble tap //print("Dubble tap"); TapCount = 0; } } } //hold if (Input.GetMouseButton(1) || Input.touchCount == 2) { bool moveIt = false; if (Application.platform == RuntimePlatform.Android) { if (Input.GetTouch(0).phase != TouchPhase.Ended) { moveIt = true; } else { moveIt = false; } } if (Application.platform == RuntimePlatform.WindowsPlayer) { if (Input.GetMouseButtonDown(1)) { moveIt = true; } else { moveIt = false; } } if (Application.platform == RuntimePlatform.WindowsEditor) { if (Input.GetMouseButtonDown(1)) { moveIt = true; } else { moveIt = false; } } if (moveIt) { if (Application.platform == RuntimePlatform.Android) { acumTime += Input.GetTouch(0).deltaTime; } if (Application.platform == RuntimePlatform.WindowsPlayer) { acumTime += Time.deltaTime; StartCoroutine(BreakPlayer(MoveSpeedInWater)); } if (Application.platform == RuntimePlatform.WindowsEditor) { acumTime += Time.deltaTime; StartCoroutine(BreakPlayer(MoveSpeedInWater)); } if (acumTime >= holdTime) { //2 finger Long tap is_hold = true; StartCoroutine(BreakPlayer(MoveSpeedInWater)); if ((Time.time - timer_for_double_click) > delay) { // print("One Hold Time Reached"); StartCoroutine(MovePlayer(0.6f)); is_hold = false; one_click = false; acumTime = 0f; //IsAnimator.SetBool(STOP, false); //IsAnimator.SetBool(MOVING, false); } } } else { IsAnimator.SetBool(IDLE, true); IsAnimator.SetBool(MOVING, false); IsAnimator.SetBool(STOP, false); is_hold = false; acumTime = 0; } } if (Time.time > NewTime) { /*IsAnimator.SetBool(IDLE, true); * IsAnimator.SetBool(MOVING, false);*/ TapCount = 0; MoveBoatSplash.Stop(); } } }