public void OnSceneGUI() { PHIKBallActuatorBehaviour phIKActBehaviour = (PHIKBallActuatorBehaviour)target; // ----- ----- ----- ----- ----- // Pullback Target Handle // <!!>(本当は親剛体の姿勢を基準にしたほうがいいのでは?) if (phIKActBehaviour.showPullbackTargetHandle) { Tools.current = Tool.None; if (phIKActBehaviour.phIKBallActuator != null) { phIKActBehaviour.phIKBallActuator.GetDesc(desc); Quaternion currPullbackTarget = desc.pullbackTarget.ToQuaternion(); Quaternion handleRot = Handles.RotationHandle(currPullbackTarget, phIKActBehaviour.transform.position); desc.pullbackTarget = handleRot.ToQuaterniond(); phIKActBehaviour.phIKBallActuator.SetDesc(desc); phIKActBehaviour.desc.pullbackTarget = desc.pullbackTarget; } else if (phIKActBehaviour.desc != null) { Quaternion currPullbackTarget = ((Quaterniond)(phIKActBehaviour.desc.pullbackTarget)).ToQuaternion(); Quaternion handleRot = Handles.RotationHandle(currPullbackTarget, phIKActBehaviour.transform.position); phIKActBehaviour.desc.pullbackTarget = handleRot.ToQuaterniond(); } } }
// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- // SprBehaviourの派生クラスで実装するメソッド // -- 全てのBuildが完了した後に行う処理を書く。オブジェクト同士をリンクするなど public override void Link() { PHIKBallActuatorBehaviour ba = gameObject.GetComponentInChildren <PHIKBallActuatorBehaviour>(); if (ba != null && ba.sprObject != null && sprObject != null) { ba.sprObject.AddChildObject(sprObject); } PHIKHingeActuatorBehaviour ha = gameObject.GetComponentInChildren <PHIKHingeActuatorBehaviour>(); if (ha != null && ha.sprObject != null && sprObject != null) { ha.sprObject.AddChildObject(sprObject); } UpdateIKTargetPosition(); }
// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- void Start() { ikActuator = GetComponent <PHIKBallActuatorBehaviour>(); }