Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * This is a VisibleItem extension for RPG Kit.
- * you can specify which AnimatorOverride to use, to replace animations based on the Weapon Type
- *
- * Also it have an Holster, so you can store the weapon somwhere in the character hierarchy.
- * and Place it in Hand when entering in combat.
- *
- * Please note, that by default RPG Kit didn't have any InCombat/OutOfCombat method, and also
- * it will require a Bool Parameter called "In Combat" used to indicate to Unity which animation to play.
- *
- * <TODO>
- * Call methods from Animator, to get a smoother transition from
- * holding a weapon, to when putting it back in the holster.
- * </TODO>
- */
- using UnityEngine;
- using DevionGames.InventorySystem;
- namespace MaximilianPs
- {
- public class GDMeleeWeapon : Weapon
- {
- [SerializeField]
- private AnimatorOverrideController animatorOverride;
- private AnimatorOverrideController animatorBackup;
- [Space]
- [SerializeField]
- private Transform holster;
- private GameObject weapon;
- private bool inCombat = false;
- protected override void Start()
- {
- base.Start();
- animatorBackup = m_CharacterAnimator.runtimeAnimatorController as AnimatorOverrideController;
- inCombat = m_CharacterAnimator.GetBool("In Combat");
- }
- public override void OnItemEquip(Item item)
- {
- base.OnItemEquip(item);
- m_CharacterAnimator.runtimeAnimatorController = animatorOverride;
- if(m_CharacterAnimator.GetBool("In Combat") == false)
- {
- // = GetEquipedGameObjects(attachments[0].region.Name)[0];
- weapon = attachments[0].gameObject;
- weapon.transform.parent = holster;
- weapon.transform.localPosition = Vector3.zero;
- weapon.transform.localRotation = Quaternion.identity;
- }
- }
- public override void OnItemUnEquip(Item item)
- {
- base.OnItemUnEquip(item);
- m_CharacterAnimator.runtimeAnimatorController = animatorBackup;
- }
- protected override void Update()
- {
- base.Update();
- if(inCombat != m_CharacterAnimator.GetBool("In Combat"))
- {
- inCombat = m_CharacterAnimator.GetBool("In Combat");
- if (inCombat == false)
- WeaponInHolster();
- else
- WeaponInHand();
- }
- }
- protected override void Use()
- {
- base.Use();
- if(m_CharacterAnimator.GetBool("In Combat") == false)
- {
- WeaponInHand();
- m_CharacterAnimator.SetBool("In Combat", true);
- inCombat = true;
- }
- }
- private void WeaponInHand()
- {
- weapon = attachments[0].gameObject;
- weapon.transform.parent = m_Handler.GetBone(attachments[0].region);
- weapon.transform.localPosition = attachments[0].position;
- weapon.transform.localRotation = Quaternion.Euler(attachments[0].rotation);
- }
- private void WeaponInHolster()
- {
- weapon = attachments[0].gameObject;
- weapon.transform.parent = m_Handler.GetBone(attachments[0].region);
- weapon.transform.parent = holster;
- weapon.transform.localPosition = Vector3.zero;
- weapon.transform.localRotation = Quaternion.identity;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement