public override void CopyFrom(BlendData target) { CameraRigBlendData t = (CameraRigBlendData)target; LocalPosition = t.LocalPosition; LocalRotation = t.LocalRotation; FovRatio = t.FovRatio; }
public override void CaculateAdd(BlendData lhs, BlendData rhs) { CameraRigBlendData l = (CameraRigBlendData)lhs; CameraRigBlendData r = (CameraRigBlendData)rhs; LocalPosition = l.LocalPosition + r.LocalPosition; LocalRotation = l.LocalRotation * r.LocalRotation; FovRatio = l.FovRatio + r.FovRatio; }
public override void CaculateLerp(BlendData from, BlendData to, float lerpRatio) { CameraRigBlendData f = (CameraRigBlendData)from; CameraRigBlendData t = (CameraRigBlendData)to; LocalPosition = Vector3.Lerp(f.LocalPosition, t.LocalPosition, lerpRatio); LocalRotation = Quaternion.Lerp(f.LocalRotation, t.LocalRotation, lerpRatio); FovRatio = Mathf.Lerp(f.FovRatio, t.FovRatio, lerpRatio); }
// Update is called once per frame void Update() { // 1,设置各个blend node中的weight _root.CurrentWeight = Weight_Root; _fix.CurrentWeight = Weight_Fix; _normalPositions.CurrentWeight = Weight_NormalPositions; // 2,从tree获得result。 CameraRigBlendData data = BlendTree.GetResult() as CameraRigBlendData; Camera.transform.localPosition = data.LocalPosition; Camera.transform.localRotation = data.LocalRotation; Camera.fieldOfView = data.FovRatio * 60; // Debug.Log(data.LocalPosition + " " + data.LocalRotation.eulerAngles + " " + data.FovRatio); }
void Awake() { _cached = new CameraRigBlendData(); }