MyComponent_Vector3Constraint向量\欧拉角约束器

注:该组件用于计算约束后的向量及欧拉角,可用于炮塔,相机等...角度和位移的限制,个人将其嵌在“电机”上使用

查看:MyComponent_PositionMachine虚拟位置电机

查看:MyComponent_RotationMachine虚拟旋转电机

 

查看:MyTool_Static.EulerAngleConversion欧拉角,角度转换计算

/// <summary>
/// 向量\欧拉角约束器
/// </summary>
public class MyComponent_Vector3Constraint : MonoBehaviour {
	
	public bool Constraint_X = true;
	public bool Constraint_Y = true;
	public bool Constraint_Z = true;

	/// <summary>
	///向量\欧拉角约束最大值
	/// </summary>
	public  Vector3 Limit_Vector3_Max;
	/// <summary>
	/// 向量\欧拉角约束最小值
	/// </summary>
	public  Vector3 Limit_Vector3_Min;

	/// <summary>
	/// 约束器重置
	/// </summary>
	/// <param name="Limit_Vector3_Min">向量\欧拉角约束最小值</param>
	/// <param name="Limit_Vector3_Max">向量\欧拉角约束最大值</param>
	public void Constraint_Reset(Vector3 Limit_Vector3_Min, Vector3 Limit_Vector3_Max){
		this.Limit_Vector3_Min = Limit_Vector3_Min;
		this.Limit_Vector3_Max = Limit_Vector3_Max;
	}


	/// <summary>
	/// 角度约束器(0~360)
	/// </summary>
	/// <param name="EulerAngles">要约束的欧拉角</param>
	/// <returns>retuen : 约束后转换成 0~360 的欧拉角</returns>
	public Vector3  Constraints_EulerAngle_P360(Vector3 EulerAngles){
		EulerAngles = MyTool.Static.EulerAngleConversion.EulerAngles_PN_To_PN180(EulerAngles);//正负无限转换成正负180度
		EulerAngles = Constraints_Vector3(EulerAngles);//约束方法
		EulerAngles = MyTool.Static.EulerAngleConversion.EulerAngles_PN_To_P360(EulerAngles);//转换成正360度
		return EulerAngles;//最终返回
	}

	/// <summary>
	/// 角度约束器(正负0~180)
	/// </summary>
	/// <param name="EulerAngles">要约束的欧拉角</param>
	/// <returns>return : 约束后转换成 正负0~180 的欧拉角</returns>
	public Vector3 Constraints_EulerAngle_PN180(Vector3 EulerAngles){
		EulerAngles = MyTool.Static.EulerAngleConversion.EulerAngles_PN_To_PN180(EulerAngles);//正负无限转换成正负180度
		EulerAngles = Constraints_Vector3(EulerAngles);//约束
		return EulerAngles;//最终返回
	}

	/// <summary>
	/// 向量约束器
	/// </summary>
	/// <param name="Vector">要约束的向量</param>
	/// <returns>return :约束后的向量</returns>
	public Vector3 Constraints_Vector3(Vector3 Vector){
		if(Constraint_X)Vector.x = Mathf.Clamp(Vector.x,Limit_Vector3_Min.x,Limit_Vector3_Max.x);
		if(Constraint_Y)Vector.y = Mathf.Clamp(Vector.y,Limit_Vector3_Min.y,Limit_Vector3_Max.y);
		if(Constraint_Z)Vector.z = Mathf.Clamp(Vector.z,Limit_Vector3_Min.z,Limit_Vector3_Max.z);
		return Vector;//最终返回
	}

}

查看:MyTool_Static.EulerAngleConversion欧拉角,角度转换计算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值