public void MoveOrbit(ORBIT_Mode _om) { MyRigidBody.MovePosition(Vector3.MoveTowards(transform.position, OrbitPoint[OrbitProgressive].position, Speed * Time.deltaTime)); MyRigidBody.MoveRotation(Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(OrbitPoint[OrbitProgressive].rotation), Torque * Time.deltaTime)); if (transform.position == OrbitPoint[OrbitProgressive].position) { if (OrbitPoint[OrbitProgressive].pointEvent != null) { OrbitPoint[OrbitProgressive].pointEvent.Excute(); } if (Move_ModeCurrent == MOVE_Mode.STEP) { SetOn(false); } if (OrbitProgressive == 0 && Reverse) { switch (_om) { case ORBIT_Mode.CIRCLE: OrbitProgressive = OrbitPoint.Count - 1; break; case ORBIT_Mode.REPEAT: SetProgress(OrbitPoint.Count - 1); break; case ORBIT_Mode.PENDULUM: Reverse = !Reverse; break; case ORBIT_Mode.ONEWAY: SetOn(false); break; } } else if (OrbitProgressive == OrbitPoint.Count-1 && !Reverse) { switch (_om) { case ORBIT_Mode.CIRCLE: OrbitProgressive = 0; break; case ORBIT_Mode.REPEAT: SetProgress(0); break; case ORBIT_Mode.PENDULUM: Reverse = !Reverse; break; case ORBIT_Mode.ONEWAY: SetOn(false); break; } } else { if (Reverse) OrbitProgressive--; else OrbitProgressive++; } Torque = Quaternion.Angle(transform.rotation, Quaternion.Euler(OrbitPoint[OrbitProgressive].rotation)) /(Vector3.Distance(transform.position, OrbitPoint[OrbitProgressive].position) / Speed); } }
public void MoveOrbit(ORBIT_Mode _om) { MyRigidBody.MovePosition(Vector3.MoveTowards(transform.position, OrbitPoint[OrbitProgressive].position, Speed * Time.deltaTime)); MyRigidBody.MoveRotation(Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(OrbitPoint[OrbitProgressive].rotation), Torque * Time.deltaTime)); if (transform.position == OrbitPoint[OrbitProgressive].position) { if (OrbitPoint[OrbitProgressive].pointEvent != null) { OrbitPoint[OrbitProgressive].pointEvent.Excute(); } if (Move_ModeCurrent == MOVE_Mode.STEP) { SetOn(false); } if (OrbitProgressive == 0 && Reverse) { switch (_om) { case ORBIT_Mode.CIRCLE: OrbitProgressive = OrbitPoint.Count - 1; break; case ORBIT_Mode.REPEAT: SetProgress(OrbitPoint.Count - 1); break; case ORBIT_Mode.PENDULUM: Reverse = !Reverse; break; case ORBIT_Mode.ONEWAY: SetOn(false); break; } } else if (OrbitProgressive == OrbitPoint.Count - 1 && !Reverse) { switch (_om) { case ORBIT_Mode.CIRCLE: OrbitProgressive = 0; break; case ORBIT_Mode.REPEAT: SetProgress(0); break; case ORBIT_Mode.PENDULUM: Reverse = !Reverse; break; case ORBIT_Mode.ONEWAY: SetOn(false); break; } } else { if (Reverse) { OrbitProgressive--; } else { OrbitProgressive++; } } Torque = Quaternion.Angle(transform.rotation, Quaternion.Euler(OrbitPoint[OrbitProgressive].rotation)) / (Vector3.Distance(transform.position, OrbitPoint[OrbitProgressive].position) / Speed); } }