Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
    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);
        }
    }