add ckg
plantilla base para movimiento básico
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class GKC_PoolingElementAI : GKC_PoolingElement
|
||||
{
|
||||
[Space]
|
||||
[Header ("Custom Settings")]
|
||||
[Space]
|
||||
|
||||
public bool setRandomPlayerModeOnSpawnEnabled;
|
||||
|
||||
public bool setMainPlayerAsTargetOnSpawnEnabled;
|
||||
|
||||
[Space]
|
||||
[Header ("Components")]
|
||||
[Space]
|
||||
|
||||
public playerController mainPlayerController;
|
||||
public health mainHealth;
|
||||
public ragdollActivator mainRagdollActivator;
|
||||
public findObjectivesSystem mainFindObjectivesSystem;
|
||||
public AINavMesh mainAINavMesh;
|
||||
public gravitySystem mainGravitySystem;
|
||||
public playerStatesManager mainPlayerStatesManager;
|
||||
|
||||
|
||||
public override void checkObjectStateAfterSpawn ()
|
||||
{
|
||||
bool characterWasDead = mainHealth.isDead ();
|
||||
|
||||
if (characterWasDead) {
|
||||
mainPlayerController.resetAnimator ();
|
||||
|
||||
mainRagdollActivator.setActivateQuickGetUpInsteadOfRegularGetUpState (true);
|
||||
|
||||
mainRagdollActivator.setForceQuickGetUpOnCharacterState (true);
|
||||
|
||||
mainRagdollActivator.disabledCheckGetUpPaused ();
|
||||
|
||||
mainRagdollActivator.setCharacterBodyParentOut ();
|
||||
|
||||
mainHealth.resurrectFromExternalCall ();
|
||||
|
||||
mainRagdollActivator.setForceQuickGetUpOnCharacterState (false);
|
||||
}
|
||||
|
||||
if (!mainHealth.isDead ()) {
|
||||
mainFindObjectivesSystem.clearFullEnemiesList ();
|
||||
|
||||
mainFindObjectivesSystem.removeCharacterAsTargetOnSameFaction ();
|
||||
|
||||
mainFindObjectivesSystem.resetAITargets ();
|
||||
|
||||
mainFindObjectivesSystem.removeTargetInfo ();
|
||||
|
||||
if (characterWasDead) {
|
||||
mainHealth.setHealthAmountOnMaxValue ();
|
||||
}
|
||||
|
||||
if (characterWasDead) {
|
||||
mainPlayerController.setCharacterMeshGameObjectState (true);
|
||||
|
||||
mainRagdollActivator.setCharacterBodyActiveState (true);
|
||||
}
|
||||
|
||||
mainAINavMesh.pauseAI (false);
|
||||
|
||||
if (setRandomPlayerModeOnSpawnEnabled) {
|
||||
if (mainPlayerStatesManager.isUseRandomPlayerModeOnStartActive ()) {
|
||||
mainPlayerStatesManager.checkUseRandomPlayerModeOnStart ();
|
||||
|
||||
if (characterWasDead) {
|
||||
mainPlayerStatesManager.setDefaultPlayersModeAsCurrentOne ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (characterWasDead) {
|
||||
mainFindObjectivesSystem.resetAIToOriginalPosition ();
|
||||
}
|
||||
|
||||
mainFindObjectivesSystem.checkAIBehaviorStateOnCharacterSpawn ();
|
||||
|
||||
mainAINavMesh.resetInitialTargetCheckedOnCharacterSpawn ();
|
||||
|
||||
if (setMainPlayerAsTargetOnSpawnEnabled) {
|
||||
Transform newTarget = GKC_Utils.findMainPlayerTransformOnScene ();
|
||||
|
||||
if (newTarget != null) {
|
||||
mainAINavMesh.follow (newTarget);
|
||||
}
|
||||
}
|
||||
|
||||
mainPlayerController.getRigidbody ().isKinematic = false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void checkObjectStateBeforeDespawn ()
|
||||
{
|
||||
mainAINavMesh.pauseAI (true);
|
||||
|
||||
mainRagdollActivator.setModelAndSkeletonParentInsideCharacter ();
|
||||
|
||||
mainGravitySystem.setNewParent (mainPoolGameObject.transform);
|
||||
|
||||
mainFindObjectivesSystem.checkAIBehaviorStateOnCharacterDespawn ();
|
||||
|
||||
mainFindObjectivesSystem.resetAIToOriginalPosition ();
|
||||
|
||||
mainPlayerController.getRigidbody ().isKinematic = true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user