add ckg
plantilla base para movimiento básico
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class shootFireWeaponSimpleAIAction : simpleAIAction
|
||||
{
|
||||
[Header ("Custom Settings")]
|
||||
[Space]
|
||||
|
||||
public float shootWeaponDuration = 2;
|
||||
|
||||
public bool useAmountOfProjectilesToShoot;
|
||||
|
||||
public int amountOfProjectilesToShoot;
|
||||
|
||||
[Space]
|
||||
[Header ("Debug")]
|
||||
[Space]
|
||||
|
||||
public bool aimingWeapon;
|
||||
public bool shootingWeapon;
|
||||
|
||||
[Space]
|
||||
[Header ("Components")]
|
||||
[Space]
|
||||
|
||||
public playerWeaponsManager mainPlayerWeaponsManager;
|
||||
public findObjectivesSystem mainFindObjectivesSystem;
|
||||
public playerCamera mainPlayerCamera;
|
||||
|
||||
float lastTimeShooting;
|
||||
|
||||
|
||||
public override void startAIAction ()
|
||||
{
|
||||
base.startAIAction ();
|
||||
|
||||
if (actionActive) {
|
||||
if (actionUsedByPlayer) {
|
||||
|
||||
} else {
|
||||
mainFindObjectivesSystem.setPossibleTargetForTurnBasedCombatSystemAsCustomTargetToLook ();
|
||||
}
|
||||
|
||||
mainPlayerCamera.pauseOrPlayCamera (true);
|
||||
|
||||
mainPlayerCamera.changeCameraRotationState (true);
|
||||
|
||||
|
||||
if (useAmountOfProjectilesToShoot) {
|
||||
mainPlayerWeaponsManager.resetLastAmountOfFiredProjectiles ();
|
||||
}
|
||||
|
||||
if (actionUsedByPlayer) {
|
||||
mainPlayerWeaponsManager.inputAimWeapon ();
|
||||
} else {
|
||||
mainPlayerWeaponsManager.aimCurrentWeaponWhenItIsReady (true);
|
||||
}
|
||||
|
||||
if (actionUsedByPlayer) {
|
||||
mainPlayerCamera.lookAtTemporalObjectToLookAtTarget ();
|
||||
}
|
||||
|
||||
aimingWeapon = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void updateSystem ()
|
||||
{
|
||||
if (!actionActive) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (aimingWeapon) {
|
||||
if (shootingWeapon) {
|
||||
if (useAmountOfProjectilesToShoot) {
|
||||
if (mainPlayerWeaponsManager.getLastAmountOfFiredProjectiles () >= amountOfProjectilesToShoot) {
|
||||
endAIAction ();
|
||||
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (Time.time > lastTimeShooting + shootWeaponDuration) {
|
||||
endAIAction ();
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!mainPlayerWeaponsManager.currentWeaponIsMoving () &&
|
||||
mainPlayerWeaponsManager.reloadingActionNotActive () &&
|
||||
mainPlayerWeaponsManager.isPlayerCarringWeapon () &&
|
||||
|
||||
!mainPlayerWeaponsManager.isActionActiveInPlayer () &&
|
||||
mainPlayerWeaponsManager.canPlayerMove ()) {
|
||||
|
||||
setShootWeaponState (true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!actionUsedByPlayer) {
|
||||
mainFindObjectivesSystem.lookAtCurrentPlaceToShoot ();
|
||||
|
||||
mainFindObjectivesSystem.AINavMeshManager.lookAtTaget (true);
|
||||
|
||||
mainFindObjectivesSystem.AINavMeshManager.moveNavMesh (Vector3.zero, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void setShootWeaponState (bool state)
|
||||
{
|
||||
if (actionUsedByPlayer) {
|
||||
mainPlayerWeaponsManager.inputHoldOrReleaseShootWeapon (true);
|
||||
} else {
|
||||
mainPlayerWeaponsManager.shootWeapon (state);
|
||||
}
|
||||
|
||||
shootingWeapon = state;
|
||||
|
||||
if (shootingWeapon) {
|
||||
lastTimeShooting = Time.time;
|
||||
}
|
||||
}
|
||||
|
||||
public override void resetStatesOnActionEnd ()
|
||||
{
|
||||
if (shootingWeapon) {
|
||||
shootingWeapon = false;
|
||||
|
||||
mainPlayerWeaponsManager.inputHoldOrReleaseShootWeapon (false);
|
||||
|
||||
if (mainPlayerWeaponsManager.isCharacterShooting ()) {
|
||||
mainPlayerWeaponsManager.resetWeaponFiringAndAimingIfPlayerDisabled ();
|
||||
|
||||
mainPlayerWeaponsManager.setHoldShootWeaponState (false);
|
||||
}
|
||||
}
|
||||
|
||||
if (aimingWeapon) {
|
||||
if (actionUsedByPlayer) {
|
||||
mainPlayerWeaponsManager.inputAimWeapon ();
|
||||
|
||||
if (showDebugPrint) {
|
||||
print (mainPlayerWeaponsManager.isAimingWeapons ());
|
||||
}
|
||||
|
||||
if (mainPlayerWeaponsManager.isAimingWeapons ()) {
|
||||
mainPlayerWeaponsManager.setAimWeaponState (false);
|
||||
}
|
||||
|
||||
if (showDebugPrint) {
|
||||
print (mainPlayerWeaponsManager.isAimingWeapons ());
|
||||
}
|
||||
} else {
|
||||
mainPlayerWeaponsManager.aimCurrentWeaponWhenItIsReady (false);
|
||||
mainPlayerWeaponsManager.stopAimCurrentWeaponWhenItIsReady (true);
|
||||
}
|
||||
}
|
||||
|
||||
shootingWeapon = false;
|
||||
|
||||
aimingWeapon = false;
|
||||
|
||||
mainPlayerCamera.pauseOrPlayCamera (false);
|
||||
|
||||
mainPlayerCamera.changeCameraRotationState (false);
|
||||
|
||||
if (actionUsedByPlayer) {
|
||||
mainPlayerCamera.setLookAtTargetStateInput (false);
|
||||
} else {
|
||||
mainFindObjectivesSystem.AINavMeshManager.lookAtTaget (false);
|
||||
|
||||
mainFindObjectivesSystem.AINavMeshManager.moveNavMesh (Vector3.zero, false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user