IEnumerator delayGlide(float _timer) { yield return(new WaitForSeconds(_timer)); _timer *= 0.8f; mode = E_mode.Roll; }
IEnumerator delayStop(float _timer) { yield return(new WaitForSeconds(_timer)); mode = E_mode.Glide; speed = 0.08f; baseMove2 *= -1; eulerRot *= -1; coroutine = StartCoroutine(delayGlide(timer)); }
IEnumerator delayRideDown() { yield return(new WaitForSeconds(0.1f)); speed -= rideDown; if (speed <= 0) { mode = mode = E_mode.Glide; speed = 0.08f; this.GetComponent <Animator>().runtimeAnimatorController = fallAnim; coroutine = StartCoroutine(delayGlide(timer)); } else { StartCoroutine(delayRideDown()); } }
public void animPlay(E_mode mode) { switch (mode) { case E_mode.win: anim.CrossFade("win", 0); break; case E_mode.lose: anim.CrossFade("lose", 0); break; case E_mode.num: break; default: break; } }
public void BreathAddForce(Vector3 vec, float force) { //Vector3 vec1 = vec.normalized * force; //Vector3 vec2 = move * speed; //Vector3 vec3 = vec1 + vec2; //モード・アニメ変換 mode = E_mode.Ride; this.GetComponent <Animator>().runtimeAnimatorController = rideAnim; move = vec.normalized; speed = force; rideDown = speed / 8; if (cross(baseMove1, move) < 0) { euler = new Vector3(0, 0, -25); this.transform.eulerAngles = euler; baseMove2 = new Vector3(1, 0, 0); eulerRot = 3; } else { euler = new Vector3(0, 0, 25); this.transform.eulerAngles = euler; baseMove2 = new Vector3(-1, 0, 0); eulerRot = -3; } rideRot = dot(baseMove1, move); rideRot /= 5; StopAllCoroutines(); StartCoroutine(delayRideDown()); }
void Update() { pos = this.transform.position; euler = this.transform.eulerAngles; float r = euler.z; if (r > 180) { r -= 360; } switch (mode) { case E_mode.Glide: //画像の傾きから移動方向を算出 move = addition(baseMove2, radian(r)).normalized; break; case E_mode.Roll: //画像の傾きから移動方向を算出 move = addition(baseMove2, radian(r)).normalized; //画像を傾かせる euler.z += eulerRot; //速度を下げる speed -= 0.006f; if (speed <= 0) { speed = 0; mode = E_mode.Stop; coroutine = StartCoroutine(delayStop(0.1f)); } break; case E_mode.Stop: break; case E_mode.Ride: if (cross(baseMove1, move) < 0) { move = addition(move, radian(-rideRot)).normalized; } else { move = addition(move, radian(rideRot)).normalized; } break; default: break; } Vector3 vecMove = move; if (pos.x >= highpoint1.x && pos.y <= boxHighPoint.y && area == E_Area.Player1) { if (vecMove.x >= 0) { vecMove.x = 0; } } else if (pos.x <= lowPoint2.x && pos.y <= boxHighPoint.y && area == E_Area.Player2) { if (vecMove.x <= 0) { vecMove.x = 0; } } else if (pos.y <= boxHighPoint.y && area == E_Area.Center) { vecMove.y = 0; } Debug.Log(vecMove); pos += vecMove * speed; this.transform.position = pos; this.transform.eulerAngles = euler; //位置判定 if (pos.x < highpoint1.x) { area = E_Area.Player1; } else if (pos.x > lowPoint2.x) { area = E_Area.Player2; } else { area = E_Area.Center; } if (pos.y < lowPoint1.y) { enabled = false; gameOverFlg = true; } }