//euler角をangle角に変換 void SlopeVector(float Vector) { if (Vector >= MinRotation) { positionInit = PositionInit.left; } else if (Vector <= MaxRotation) { positionInit = PositionInit.right; } else if (Vector == 0.0f) { positionInit = PositionInit.zero; } switch (positionInit) { case PositionInit.left: InitVactor = 360.0f - transform.eulerAngles.z; break; case PositionInit.right: InitVactor = transform.eulerAngles.z; break; case PositionInit.zero: InitVactor = 0.0f; break; } VectorCounter = saveVector = InitVactor * 2; SpeedAddition = MaxSpeed / VectorCounter; }
void Initialize() { InitVactor = 0.0f; VectorCounter = 0.0f; saveVector = 0.0f; InitSpeed = 0.0f; SpeedAddition = 0.0f; transform.eulerAngles = new Vector3(0, 0, 0); positionInit = PositionInit.zero; }
//caseに応じて揺れるor戻る void SwayMove() { switch (childmode) { //子供がいない case ChildCount.none: transform.eulerAngles = new Vector3(0, 0, 0); Initialize(); break; //子供がいる case ChildCount.child: MoveSpeed = Onaga.MousePosition.TolVector * RotationPower; switch (Onaga.MousePosition.XDMode) { //右に移動中 case Onaga.MousePosition.XDStatus.right: if (GravityTimeCounter <= GravityTimeLimit) { if (MinRotation < transform.eulerAngles.z || MaxRotation >= (int)transform.eulerAngles.z) { transform.eulerAngles -= new Vector3(0, 0, MoveSpeed); if (MinRotation >= transform.eulerAngles.z && StopperRotation <= transform.eulerAngles.z) { transform.eulerAngles = new Vector3(0, 0, MinRotation); } } GravityTimeCounter += Time.deltaTime; } else { if (MinRotation < transform.eulerAngles.z /*|| MaxRotation >= (int)transform.eulerAngles.z*/) { transform.eulerAngles += new Vector3(0, 0, GravityPower); if (MinRotation >= transform.eulerAngles.z && StopperRotation <= transform.eulerAngles.z) { transform.eulerAngles = new Vector3(0, 0, MinRotation); } } GravityTimeCounter += Time.deltaTime; if (GravityTimeCounter >= GravityTimeLimit * 2.0f) //傾き時間と同じ時間分重力による揺れ戻り { GravityTimeCounter = 0.0f; } } SlopeVector(transform.eulerAngles.z); ReleaseChild(); break; //左に移動中 case Onaga.MousePosition.XDStatus.left: MoveSpeed = Onaga.MousePosition.TolVector * RotationPower; if (GravityTimeCounter <= GravityTimeLimit) { if (MaxRotation > transform.eulerAngles.z || StopperRotation <= (int)transform.eulerAngles.z) { transform.eulerAngles += new Vector3(0, 0, MoveSpeed); if (MaxRotation <= transform.eulerAngles.z && StopperRotation >= transform.eulerAngles.z) { transform.eulerAngles = new Vector3(0, 0, MaxRotation); } } GravityTimeCounter += Time.deltaTime; } else { if (MaxRotation > transform.eulerAngles.z /*|| StopperRotation <= (int)transform.eulerAngles.z*/) { transform.eulerAngles -= new Vector3(0, 0, GravityPower); if (MaxRotation <= transform.eulerAngles.z && StopperRotation >= transform.eulerAngles.z) { transform.eulerAngles = new Vector3(0, 0, MaxRotation); } } GravityTimeCounter += Time.deltaTime; if (GravityTimeCounter >= GravityTimeLimit * 2.0f) //傾き時間と同じ時間分重力による揺れ戻り { GravityTimeCounter = 0.0f; } } SlopeVector(transform.eulerAngles.z); ReleaseChild(); break; //移動していない case Onaga.MousePosition.XDStatus.initial: GravityTimeCounter = 0.0f; int roopcount = 1; if (VectorCounter > 0.0f) { switch (positionInit) { case PositionInit.left: if (VectorCounter > roopcount * (int)ZeroSet) { transform.eulerAngles += new Vector3(0, 0, SpeedManager()); VectorCounter -= SpeedManager(); } else { roopcount++; saveVector -= ZeroSet; VectorCounter = saveVector; positionInit = PositionInit.right; } break; case PositionInit.right: if (VectorCounter > roopcount * (int)ZeroSet) { transform.eulerAngles -= new Vector3(0, 0, SpeedManager()); VectorCounter -= SpeedManager(); } else { roopcount++; saveVector -= ZeroSet; VectorCounter = saveVector; positionInit = PositionInit.left; } break; case PositionInit.zero: transform.eulerAngles = new Vector3(0, 0, 0); break; } } break; } break; } }