/// <summary> /// start taking bow /// </summary> public override void takeBow() { #if DEBUG_INFO if (!m_Initialized) { Debug.LogError("Component not initialized < " + this.ToString() + " >"); return; } #endif if (m_SwitchingItemState) { return; } if (!areArmsFree) { return; } if (m_EquipmentScript.currentBow && m_EquipmentScript.currentQuiver) { _startTakingBow(); if (m_ThirdPersonPlayer.m_Camera is OrbitCameraController) { OrbitCameraController oCam = m_ThirdPersonPlayer.m_Camera as OrbitCameraController; def_Xconstraint = oCam.Xconstraint; oCam.minXAngle = -30; oCam.maxXAngle = 35; } } }
/// <summary> /// initialize component /// </summary> public override bool initialize() { if (m_Initialized) { return(true); } if (!base.initialize()) { return(false); } if (m_Player is PlayerThirdPerson) { m_ThirdPersonPlayer = m_Player as PlayerThirdPerson; } else { Debug.LogError("PlayerThirdPerson component missing <" + this.ToString() + ">"); return(false); } m_ItemPicker = GetComponent <ItemPicker>(); if (!m_ItemPicker) { Debug.LogError("Cannot find 'ItemPicker' component! < " + this.ToString() + " >"); return(false); } // setup ragdoll callbacks m_ThirdPersonPlayer.ragdoll.OnHit = () => { m_Character.simulateRootMotion = false; m_Character.disableMove = true; m_Character.rigidBody.velocity = Vector3.zero; m_ThirdPersonPlayer.disableInput = true; m_ThirdPersonPlayer.noLookIK(); m_Character.rigidBody.isKinematic = true; m_Character.rigidBody.detectCollisions = false; m_Character.capsule.enabled = false; if (m_ThirdPersonPlayer.ragdoll.isFullRagdoll) { m_ThirdPersonPlayer.m_Camera.switchTargets(m_ThirdPersonPlayer.ragdoll.RagdollBones[(int)BodyParts.Spine]); } }; m_ThirdPersonPlayer.ragdoll.OnStartTransition = () => { if (!m_ThirdPersonPlayer.ragdoll.isFullRagdoll && !m_ThirdPersonPlayer.ragdoll.isGettingUp) { m_Character.simulateRootMotion = true; m_Character.rigidBody.detectCollisions = true; m_Character.rigidBody.isKinematic = false; m_Character.capsule.enabled = true; } else { m_Animator.SetFloat(/*"pForward"*/ HashIDs.ForwardFloat, 0.0f); m_Animator.SetFloat(/*"pSide"*/ HashIDs.SideFloat, 0.0f); } }; m_ThirdPersonPlayer.ragdoll.ragdollEventTime = 3.0f; m_ThirdPersonPlayer.ragdoll.OnTimeEnd = () => { if (m_Stats.currentHealth > 0) { m_ThirdPersonPlayer.ragdoll.blendToMecanim(); } }; //m_Ragdoll.OnBlendEnd = () => // { // Debug.Log("ON BLEND END"); // }; //m_Ragdoll.OnGetUpEvent = () => // { // Debug.Log("ON GET UP EVENT"); // }; m_ThirdPersonPlayer.ragdoll.LastEvent = () => { m_Character.simulateRootMotion = true; m_Character.disableMove = false; m_ThirdPersonPlayer.disableInput = false; if (m_ThirdPersonPlayer.lookTowardsCamera) { m_Character.setIKMode(TPCharacter.IKMode.Head); } m_Character.rigidBody.isKinematic = false; m_Character.rigidBody.detectCollisions = true; m_Character.capsule.enabled = true; m_ThirdPersonPlayer.m_Camera.switchTargets(m_ThirdPersonPlayer.m_Camera.Target); }; if (m_ThirdPersonPlayer.lookTowardsCamera) { m_Character.setIKMode(TPCharacter.IKMode.Head); } m_ThirdPersonPlayer.OnAttackHit = attack_hit_notify; m_ThirdPersonPlayer.OnAttackEndNotify = attack_end_notify; m_ThirdPersonPlayer.OnAttackStartNotify = attack_start_notify; if (m_ThirdPersonPlayer.triggers) { // setup trigger callbacks m_ThirdPersonPlayer.triggers.OnTriggerStart = () => { if (m_ThirdPersonPlayer.legsIK) { m_ThirdPersonPlayer.legsIK.enabled = false; } m_ThirdPersonPlayer.disableInput = true; bool isOnLedge = m_Animator.GetBool(/*"pOnLedge"*/ HashIDs.OnLedgeBool); if (!isOnLedge) { m_ThirdPersonPlayer.noLookIK(); m_PrevStrafing = m_ThirdPersonPlayer.strafing; m_ThirdPersonPlayer.strafing = false; } }; m_ThirdPersonPlayer.triggers.OnTriggerEnd = () => { bool isOnLedge = m_Animator.GetBool(/*"pOnLedge"*/ HashIDs.OnLedgeBool); if (!isOnLedge) { m_Player.m_Camera.additiveRotation = false; m_Player.strafing = m_PrevStrafing; if (m_ThirdPersonPlayer.legsIK) { m_ThirdPersonPlayer.legsIK.enabled = true; } if (m_ThirdPersonPlayer.lookTowardsCamera) { m_Character.setIKMode(TPCharacter.IKMode.Head); } if (m_ThirdPersonPlayer.strafing) { m_Character.setMoveMode(TPCharacter.MovingMode.Strafe); } } m_ThirdPersonPlayer.disableInput = false; }; } def_cameraMinXangle = (m_ThirdPersonPlayer.m_Camera as OrbitCameraController).minXAngle; def_cameraMaxXangle = (m_ThirdPersonPlayer.m_Camera as OrbitCameraController).maxXAngle; def_Xconstraint = (m_ThirdPersonPlayer.m_Camera as OrbitCameraController).Xconstraint; m_PrevTargetDirection = m_TargetDirection; m_Initialized = true; return(m_Initialized); }