//===[自轴旋转]====== /// <summary> /// 电机运行:欧拉角操控式自转(相对于自身坐标系的轴旋转) /// </summary> /// <param name="OriginEulerAngle">物体欧拉角(transform.eulerAngles)</param> /// <param name="direction">方向(Vector3.up)</param> /// <param name="Time_deltaTime">时间参数</param> /// <returns>return : 电机组件</returns> public SD_Motor_EulerAngle Run_ShaftControlled(Vector3 OriginEulerAngle, Vector3 direction, float Time_deltaTime) { if (MotorActivation) { MotorSave = SS_EulerAngleRotation.EulerAngles_AxisRotation(OriginEulerAngle, direction * MotorSpeed * Time_deltaTime); } return(this); }
/// <summary> /// 欧拉角插值旋转 /// </summary> /// <param name="TargetEulerAngle">目标欧拉角</param> /// <param name="RotatingMoveSpeed">旋转速度</param> /// <param name="space">坐标系</param> public static void SE_EulerAngles_Lerp(this Transform transform, Vector3 TargetEulerAngle, float RotatingMoveSpeed, Space space = Space.World) { if (space == Space.World) { transform.eulerAngles = SS_EulerAngleRotation.EulerAngles_Lerp(transform.eulerAngles, TargetEulerAngle, RotatingMoveSpeed); } else { transform.localEulerAngles = SS_EulerAngleRotation.EulerAngles_Lerp(transform.localEulerAngles, TargetEulerAngle, RotatingMoveSpeed); } }
/// <summary> /// 欧拉角平滑旋转 /// </summary> /// <param name="TargetEulerAngle">目标欧拉角</param> /// <param name="MoveTime">旋转时间</param> /// <param name="space">坐标系</param> /// <returns>旋转速度</returns> public static Vector3 SE_EulerAngles_SmoothDamp(this Transform transform, Vector3 TargetEulerAngle, float MoveTime, Space space = Space.World) { Vector3 yVelocity = new Vector3(); if (space == Space.World) { transform.eulerAngles = SS_EulerAngleRotation.EulerAngles_SmoothDamp(transform.eulerAngles, TargetEulerAngle, ref yVelocity, MoveTime); } else { transform.localEulerAngles = SS_EulerAngleRotation.EulerAngles_SmoothDamp(transform.localEulerAngles, TargetEulerAngle, ref yVelocity, MoveTime); } return(yVelocity); }
/// <summary> /// 电机运行 : 平滑旋转 /// </summary> /// <returns>电机</returns> public SD_Motor_EulerAngle Run_SmoothDampAngle() { MotorSave = SS_EulerAngleRotation.EulerAngles_SmoothDamp(MotorSave, MotorTarget, ref MotorVelocity, MotorSpeed); return(this); }
/// <summary> /// 电机运行 : 差值旋转 /// </summary> /// <param name="Time_deltaTime">时间参数</param> /// <returns>电机</returns> public SD_Motor_EulerAngle Run_LerpAngle(float Time_deltaTime) { MotorSave = SS_EulerAngleRotation.EulerAngles_Lerp(MotorSave, MotorTarget, MotorSpeed * Time_deltaTime); return(this); }