poprawki materialy unity 6, pajaki, podmiana katalogu FSM w AIControlerze, zmiana w Spider 2.0 Behaviours , skopane zycie bylo, ladowalo pajaka z zyciem 2.
This commit is contained in:
@@ -9,3 +9,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/TriggerSimpleAttack.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAIAttack.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAIClearTarget.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAIFindTargetAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -36,6 +36,8 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
protected virtual void Flee(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
if (Time.timeScale <= 0f) return;
|
||||
|
||||
// FLEEING FROM DAMAGE SENDER
|
||||
if (fsmBehaviour != null && fsmBehaviour.aiController.receivedDamage.isValid && fsmBehaviour.aiController.receivedDamage.lastSender != null)
|
||||
{
|
||||
@@ -53,7 +55,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
fleeDir = Quaternion.Euler(0, Random.Range(-(5 * i), 5 * i), 0) * fleeDir.normalized;
|
||||
fleeDir.y = 0f;
|
||||
if (debugFleeDirection) Debug.DrawRay(fsmBehaviour.aiController.transform.position, fleeDir * fleeDistance, Color.yellow, 10f);
|
||||
|
||||
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.transform.position + fleeDir * fleeDistance, fleeSpeed);
|
||||
fsmBehaviour.aiController.ForceUpdatePath();
|
||||
}
|
||||
@@ -77,7 +79,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
var fleeDir = fsmBehaviour.aiController.transform.position - threatPoint;
|
||||
fleeDir = Quaternion.Euler(0, Random.Range(-(5 * i), 5 * i), 0) * fleeDir.normalized;
|
||||
if (debugFleeDirection) Debug.DrawRay(fsmBehaviour.aiController.transform.position, fleeDir * fleeDistance, Color.yellow, 10f);
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.transform.position + fleeDir * fleeDistance,fleeSpeed);
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.transform.position + fleeDir * fleeDistance, fleeSpeed);
|
||||
fsmBehaviour.aiController.ForceUpdatePath();
|
||||
}
|
||||
}
|
||||
@@ -97,8 +99,8 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
if (debugMode) Debug.Log("Fleeing without target or damage sender");
|
||||
var fleeDir = fsmBehaviour.aiController.transform.forward;
|
||||
fleeDir = Quaternion.Euler(0, Random.Range(-(10 * i), 10 * (i)), 0) * fleeDir.normalized;
|
||||
if (debugFleeDirection) Debug.DrawRay(fsmBehaviour.aiController.transform.position, fleeDir * fleeDistance, Color.yellow, 10f);
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.transform.position + fleeDir * fleeDistance,fleeSpeed);
|
||||
if (debugFleeDirection) Debug.DrawRay(fsmBehaviour.aiController.transform.position, fleeDir * fleeDistance, Color.yellow, 10f);
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.transform.position + fleeDir * fleeDistance, fleeSpeed);
|
||||
fsmBehaviour.aiController.ForceUpdatePath();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAIFlee.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAIGetCoverAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("Requires a AIMessageReceiver attached to your AI Controller - This will send a message to your Controller, so you can triggers custom Events", UnityEditor.MessageType.Info)]
|
||||
[vFSMHelpbox("Requires a vMessageReceiver attached to your AI Controller - This will send a message to your Controller, so you can trigger custom Events", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vAISendMessage : vStateAction
|
||||
{
|
||||
@@ -18,11 +20,24 @@
|
||||
{
|
||||
executionType = vFSMComponentExecutionType.OnStateEnter;
|
||||
}
|
||||
|
||||
public string listenerName;
|
||||
public string message;
|
||||
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
if (fsmBehaviour.messageReceiver) fsmBehaviour.messageReceiver.Send(listenerName, message);
|
||||
// Pobranie komponentu vMessageReceiver
|
||||
var receiver = fsmBehaviour.gameObject.GetComponent<vMessageReceiver>();
|
||||
|
||||
// Jeśli komponent istnieje, wysyła wiadomość
|
||||
if (receiver != null)
|
||||
{
|
||||
receiver.Send(listenerName, message);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"vMessageReceiver not found on {fsmBehaviour.gameObject.name}. Cannot send message.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAISendMessage.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAISetDetectionLayer.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAISetDetectionTags.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAISetLineOfSight.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAISetObstaclesLayer.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -23,12 +23,16 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
[vHelpBox("Use this to ignore attack time")]
|
||||
public bool forceCanAttack;
|
||||
|
||||
[Tooltip("This action will check if aim is enabled using vAnimatorTag with (Upperbody Pose) tag on layer setted")]
|
||||
public int aimLayer = 4;
|
||||
[Tooltip("The shot rountine just will run when Aim angle is in Max Angle To Shot (Inspector of vControlAIShooter>ShooterSettings")]
|
||||
public bool onlyShotWhenInAngle;
|
||||
public bool debug;
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
if (fsmBehaviour.aiController is vIControlAIShooter)
|
||||
{
|
||||
ControlAttack(fsmBehaviour, fsmBehaviour.aiController as vIControlAIShooter);
|
||||
ControlAttack(fsmBehaviour, fsmBehaviour.aiController as vIControlAIShooter,executionType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,8 +60,14 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
protected virtual void HandleAttack(vIFSMBehaviourController fsmBehaviour, vIControlAIShooter combat)
|
||||
{
|
||||
combat.AimToTarget();
|
||||
if (!combat.isAiming) return;
|
||||
combat.AimToTarget(.2f);
|
||||
bool validAimAngle = onlyShotWhenInAngle ? combat.IsInShotAngle : true;
|
||||
if (!validAimAngle || !combat.isAiming || !combat.animatorStateInfos.HasTag("Upperbody Pose") || combat.animator.IsInTransition(aimLayer) || combat.animator.GetCurrentAnimatorStateInfo(aimLayer).normalizedTime < 0.9f) return;
|
||||
if (debug)
|
||||
{
|
||||
Debug.Log("Trigger Shooter Attack");
|
||||
fsmBehaviour.SendDebug("Trigger Shooter Attack", this);
|
||||
}
|
||||
combat.Attack(forceCanAttack: forceCanAttack);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAIShooterAttack.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
|
||||
[vFSMHelpbox("Add health to the current HealthController", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vAddHealth : vStateAction
|
||||
@@ -22,7 +21,6 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
[Header("This action won't work with the DecisionTimer")]
|
||||
public float timeToAdd = 1f;
|
||||
|
||||
public int healthToRecovery = 1;
|
||||
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
@@ -37,7 +35,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
if (InTimer(fsmBehaviour, timeToAdd))
|
||||
{
|
||||
fsmBehaviour.aiController.AddHealth(healthToRecovery);
|
||||
fsmBehaviour.aiController.ChangeHealth(healthToRecovery);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAddHealth.cs
|
||||
uploadId: 601882
|
||||
|
||||
40
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAimToTargetAction.cs
vendored
Normal file
40
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAimToTargetAction.cs
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("This is a vAimToTargetAction Action", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vAimToTargetAction : vStateAction
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Combat/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
get { return "Aim To Target"; }
|
||||
}
|
||||
|
||||
public vAimToTargetAction()
|
||||
{
|
||||
executionType = vFSMComponentExecutionType.OnStateUpdate;
|
||||
}
|
||||
public bool onlyIfCanSeeTarget;
|
||||
[Tooltip("This action will check if aim is enabled using vAnimatorTag with (Upperbody Pose) tag on layer setted")]
|
||||
public int aimLayer = 4;
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
if (fsmBehaviour.aiController is vIControlAIShooter)
|
||||
{
|
||||
ControlAttack(fsmBehaviour, fsmBehaviour.aiController as vIControlAIShooter, executionType);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void ControlAttack(vIFSMBehaviourController fsmBehaviour, vIControlAIShooter combat, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
if(!onlyIfCanSeeTarget|| combat.targetInLineOfSight ) combat.AimToTarget(.1f);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAimToTargetAction.cs.meta
vendored
Normal file
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAimToTargetAction.cs.meta
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2383bbaa659096e4ca5b556eb6759da5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAimToTargetAction.cs
|
||||
uploadId: 601882
|
||||
27
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAnimatorSetTrigger.cs
vendored
Normal file
27
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAnimatorSetTrigger.cs
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("This is a vAnimatorSetTrigger Action", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vAnimatorSetTrigger : vStateAction
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Animator/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
get { return "vAnimatorSetTrigger"; }
|
||||
}
|
||||
public string trigger;
|
||||
[vToggleOption("Method","Set","Reset")]
|
||||
public bool reset;
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
if(reset) fsmBehaviour.aiController.animator.ResetTrigger(trigger);else fsmBehaviour.aiController.animator.SetTrigger(trigger);
|
||||
//TO DO
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAnimatorSetTrigger.cs.meta
vendored
Normal file
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vAnimatorSetTrigger.cs.meta
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a474009c8f87c3144980f0e817fd05eb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vAnimatorSetTrigger.cs
|
||||
uploadId: 601882
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vFSMChangeBehaviour.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
public virtual void FindTarget(vIControlAI vIControl)
|
||||
{
|
||||
if (vIControl.GetTargetsInRange().Count == 0) vIControl.FindTarget();
|
||||
vIControl.FindSpecificTarget(_detectTags, _detectLayer, checkForObstacles);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vFindSpecificTarget.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vGoToDamageSender.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vGoToFriend.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Movement/"; }
|
||||
get { return "Movement/Noise/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
@@ -38,7 +38,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
if (specificType) noise = noiseListener.GetNearNoiseByTypes(noiseTypes);
|
||||
else noise = noiseListener.GetNearNoise();
|
||||
}
|
||||
else noise = noiseListener.lastListenedNoise;
|
||||
else noise = noiseListener.LastListenedNoise;
|
||||
if (noise != null)
|
||||
{
|
||||
fsmBehaviour.aiController.MoveTo(noise.position,speed);
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vGoToNoisePosition.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
}
|
||||
|
||||
public bool useStrafeMovement = false;
|
||||
[vHideInInspector("useStrafeMovement")]
|
||||
public bool updateRotationInStrafe = false;
|
||||
public vAIMovementSpeed speed = vAIMovementSpeed.Walking;
|
||||
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
@@ -23,8 +25,15 @@
|
||||
if (executionType == vFSMComponentExecutionType.OnStateEnter) fsmBehaviour.aiController.ForceUpdatePath(2f);
|
||||
|
||||
if (useStrafeMovement)
|
||||
fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.lastTargetPosition, fsmBehaviour.aiController.lastTargetPosition - fsmBehaviour.transform.position,speed);
|
||||
else fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.lastTargetPosition,speed);
|
||||
{
|
||||
if (updateRotationInStrafe)
|
||||
{
|
||||
var dir = fsmBehaviour.aiController.targetInLineOfSight ? fsmBehaviour.aiController.lastTargetPosition - fsmBehaviour.transform.position : fsmBehaviour.aiController.desiredVelocity;
|
||||
fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.lastTargetPosition, dir, speed);
|
||||
}
|
||||
else fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.lastTargetPosition, speed);
|
||||
}
|
||||
else fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.lastTargetPosition, speed);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vGoToTarget.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vLookAroundAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vLookToDamageSender.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vLookToTargetAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -19,6 +19,11 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
}
|
||||
|
||||
public vAIMovementSpeed patrolSpeed = vAIMovementSpeed.Walking;
|
||||
|
||||
public bool patrolInStrafe;
|
||||
[vHideInInspector("patrolInStrafe")]
|
||||
public bool updateRotationInStrafe=true;
|
||||
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
DoPatrolWaypoints(fsmBehaviour);
|
||||
@@ -88,7 +93,14 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
else
|
||||
{
|
||||
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.targetWaypoint.position, patrolSpeed);
|
||||
if (patrolInStrafe)
|
||||
{
|
||||
if(updateRotationInStrafe) fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.targetWaypoint.position, fsmBehaviour.aiController.desiredVelocity, patrolSpeed);
|
||||
else fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.targetWaypoint.position, patrolSpeed);
|
||||
}
|
||||
|
||||
else
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.targetWaypoint.position, patrolSpeed);
|
||||
if (debugMode) Debug.Log("Go to new Waypoint");
|
||||
}
|
||||
}
|
||||
@@ -97,13 +109,25 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
if (fsmBehaviour.debugMode)
|
||||
fsmBehaviour.SendDebug("MoveTo SelfStartPosition", this);
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.selfStartPosition, patrolSpeed);
|
||||
if (patrolInStrafe)
|
||||
{
|
||||
if (updateRotationInStrafe) fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.selfStartPosition, fsmBehaviour.aiController.desiredVelocity, patrolSpeed);
|
||||
else fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.selfStartPosition, patrolSpeed);
|
||||
}
|
||||
else
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.selfStartPosition, patrolSpeed);
|
||||
}
|
||||
else if (fsmBehaviour.aiController.customStartPoint)
|
||||
{
|
||||
if (fsmBehaviour.debugMode)
|
||||
fsmBehaviour.SendDebug("MoveTo CustomStartPosition", this);
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.customStartPosition, patrolSpeed);
|
||||
if (patrolInStrafe)
|
||||
{
|
||||
if (updateRotationInStrafe) fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.customStartPosition, fsmBehaviour.aiController.desiredVelocity, patrolSpeed);
|
||||
else fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.customStartPosition, patrolSpeed);
|
||||
}
|
||||
else
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.customStartPosition, patrolSpeed);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vPatrolAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Controller/"; }
|
||||
get { return "Animator/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
@@ -18,7 +18,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
public string _animationState;
|
||||
public int _layer;
|
||||
|
||||
public float crossfade=0.2f;
|
||||
public vPlayAnimationAction()
|
||||
{
|
||||
executionType = vFSMComponentExecutionType.OnStateEnter;
|
||||
@@ -26,7 +26,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
fsmBehaviour.aiController.animator.Play(_animationState, _layer);
|
||||
fsmBehaviour.aiController.animator.CrossFadeInFixedTime(_animationState,crossfade, _layer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vPlayAnimationAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
24
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vRegisterLastPosition.cs
vendored
Normal file
24
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vRegisterLastPosition.cs
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("This is a vRegisterLastPosition Action", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vRegisterLastPosition : vStateAction
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Movement/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
get { return "Set Start Position"; }
|
||||
}
|
||||
|
||||
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
||||
{
|
||||
fsmBehaviour.aiController.selfStartPosition = fsmBehaviour.aiController.transform.position;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vRegisterLastPosition.cs.meta
vendored
Normal file
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Actions/vRegisterLastPosition.cs.meta
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b44524182f127484c95dac2cc9c5fc39
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vRegisterLastPosition.cs
|
||||
uploadId: 601882
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vRotateToTargetAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vSetDamageSenderAsTarget.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vShooterCombatAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
protected virtual void ControlLookPoint(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.currentTarget.transform == null || !controller.currentTarget.hasCollider)
|
||||
if (controller.currentTarget.transform == null || !controller.currentTarget.collider)
|
||||
return;
|
||||
|
||||
var movepoint = (controller.lastTargetPosition);
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vSimpleCombatAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -9,3 +9,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vTriggerSoundAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Actions/vWanderAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/Editor/vStateDecisionObjectDrawer.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/NodeDrawerHelper.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -35,10 +35,19 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
public static float borderAlpha { get { return GetValue<float>("borderAlpha"); } set { SetValue("borderAlpha", value); } }
|
||||
|
||||
|
||||
// Add preferences section named "My Preferences" to the Preferences Window
|
||||
[PreferenceItem("vFSM Behaviour")]
|
||||
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
[SettingsProvider]
|
||||
public static SettingsProvider CreateSettingsProvider()
|
||||
{
|
||||
return new SettingsProvider("Invector Preferences/FSM Behaviour", SettingsScope.User)
|
||||
{
|
||||
guiHandler = (searchContext) =>
|
||||
{
|
||||
PreferencesGUI();
|
||||
}
|
||||
};
|
||||
}
|
||||
#endif
|
||||
public static void PreferencesGUI()
|
||||
{
|
||||
var style = new GUIStyle(EditorStyles.boldLabel);
|
||||
@@ -112,7 +121,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
}
|
||||
|
||||
static void Save()
|
||||
{
|
||||
{
|
||||
System.Text.StringBuilder text = new System.Text.StringBuilder();
|
||||
var count = 0;
|
||||
if (keyValues == null) Load();
|
||||
@@ -175,6 +184,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
static bool inLoad;
|
||||
static void StringToPreferences(string stringValue)
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vBehaviourPreferences.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vFSMBehaviour.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vFSMEnums.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vFSMHelpboxAttribute.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vFSMHelper.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -82,9 +82,9 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
public virtual void OnStateEnter(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
if (resetCurrentDestination)
|
||||
fsmBehaviour.aiController.Stop();
|
||||
|
||||
if (resetCurrentDestination && fsmBehaviour.aiController!=null)
|
||||
fsmBehaviour.aiController.Stop();
|
||||
|
||||
if (components == null)
|
||||
components = new FSMComponent(actions);
|
||||
if (useActions && components != null)
|
||||
@@ -95,10 +95,13 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
if (components == null)
|
||||
components = new FSMComponent(actions);
|
||||
|
||||
if (useActions && components != null)
|
||||
components.DoActions(fsmBehaviour, vFSMComponentExecutionType.OnStateUpdate);
|
||||
components.DoActions(fsmBehaviour, vFSMComponentExecutionType.OnStateUpdate);
|
||||
|
||||
fsmBehaviour.ChangeState(TransitTo(fsmBehaviour));
|
||||
|
||||
|
||||
fsmBehaviour.ChangeState(TransitTo(fsmBehaviour));
|
||||
}
|
||||
|
||||
public virtual void OnStateExit(vIFSMBehaviourController fsmBehaviour)
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vFSMState.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vStateAction.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vStateDecision.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vStateDecisionObject.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
|
||||
Dictionary<vIFSMBehaviourController, float> transitionTimers;
|
||||
public vFSMState TransitTo(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
{
|
||||
var val = true;
|
||||
vFSMState returState = null;
|
||||
for(int i=0;i<decisions.Count;i++)
|
||||
@@ -41,8 +41,9 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
else if (!val && falseState) returState= useFalseState && !muteFalse ? falseState : null;
|
||||
|
||||
if (transitionTimers == null) transitionTimers = new Dictionary<vIFSMBehaviourController, float>();
|
||||
|
||||
if (!transitionTimers.ContainsKey(fsmBehaviour)) transitionTimers.Add(fsmBehaviour,0f);
|
||||
|
||||
|
||||
if (transitionTimers[fsmBehaviour] < transitionDelay && returState)
|
||||
{
|
||||
transitionTimers[fsmBehaviour] += Time.deltaTime;
|
||||
@@ -53,7 +54,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
transitionTimers[fsmBehaviour] = 0;
|
||||
if (fsmBehaviour.debugMode && returState) fsmBehaviour.SendDebug("<color=yellow>" + parentState.name + " Transited to " + returState.name +"</color>", parentState);
|
||||
}
|
||||
}
|
||||
return returState;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Components/vStateTransition.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7905c93fd1fdd3a43845ac79a8abfb38
|
||||
folderAsset: yes
|
||||
timeCreated: 1517957126
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,9 +0,0 @@
|
||||
Update 1.0.2 will no longer support CustomStates, you should use Actions instead.
|
||||
|
||||
For example:
|
||||
- for the vAIChaseState use the Action 'Chase Target' instead
|
||||
- for the vAICombatState use the Action 'SimpleCombat' instead
|
||||
- for the vAISimpleCombatState use the Action 'MeleeCombat' instead
|
||||
- for the vAIShooterCombatState use the Action 'ShooterCombat' instead
|
||||
|
||||
This scripts will still be on the package to avoid breaking any FSM created before.
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a2f2186f906de344abab48900719a48e
|
||||
timeCreated: 1567027829
|
||||
licenseType: Store
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,31 +0,0 @@
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("This Custom State is DEPRECATED, use the Action Chase instead", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vAIChaseState : vFSMState
|
||||
{
|
||||
public bool chaseInStrafe = false;
|
||||
|
||||
public vAIChaseState()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
description = "Custom Chase State";
|
||||
#endif
|
||||
}
|
||||
public vAIMovementSpeed chaseSpeed = vAIMovementSpeed.Running;
|
||||
public override void UpdateState(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
base.UpdateState(fsmBehaviour);
|
||||
|
||||
if (fsmBehaviour != null && fsmBehaviour.aiController.currentTarget.transform != null) {
|
||||
|
||||
if (chaseInStrafe)
|
||||
fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.lastTargetPosition, (fsmBehaviour.aiController.lastTargetPosition - fsmBehaviour.aiController.transform.position).normalized,chaseSpeed);
|
||||
else
|
||||
fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.lastTargetPosition,chaseSpeed);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b79187c84e6c9a40ae1216b046ae14f
|
||||
timeCreated: 1527089858
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {fileID: 2800000, guid: b9d2a1010ab1f81469bfdc648fa4dbf7, type: 3}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,31 +0,0 @@
|
||||
|
||||
using System;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public abstract class vAICombatState : vFSMState
|
||||
{
|
||||
public override Type requiredType
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(vIControlAICombat);
|
||||
}
|
||||
}
|
||||
|
||||
public override void UpdateState(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
if (fsmBehaviour.aiController is vIControlAICombat)
|
||||
UpdateCombatState(fsmBehaviour.aiController as vIControlAICombat);
|
||||
|
||||
base.UpdateState(fsmBehaviour);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called from UpdateState if vIControlAI is a vIControlAICombat
|
||||
/// </summary>
|
||||
/// <param name="ctrlAICombat"></param>
|
||||
protected abstract void UpdateCombatState(vIControlAICombat ctrlAICombat);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 191035b4083d6f24bb55305491c4ca4b
|
||||
timeCreated: 1527089871
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {fileID: 2800000, guid: b9d2a1010ab1f81469bfdc648fa4dbf7, type: 3}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,121 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public class vAIShooterCombatState : vAICombatState
|
||||
{
|
||||
public vAIMovementSpeed combatSpeed = vAIMovementSpeed.Walking;
|
||||
public vAIMovementSpeed engageSpeed = vAIMovementSpeed.Running;
|
||||
public override Type requiredType
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(vIControlAIShooter);
|
||||
}
|
||||
}
|
||||
public vAIShooterCombatState()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
description = "Custom Shooter Combat State";
|
||||
#endif
|
||||
}
|
||||
|
||||
public override void OnStateEnter(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
base.OnStateEnter(fsmBehaviour);
|
||||
|
||||
if (fsmBehaviour.aiController is vIControlAICombat)
|
||||
{
|
||||
var aiCombat = (fsmBehaviour.aiController as vIControlAICombat);
|
||||
aiCombat.InitAttackTime();
|
||||
aiCombat.isInCombat = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnStateExit(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
base.OnStateExit(fsmBehaviour);
|
||||
if (fsmBehaviour.aiController is vIControlAICombat)
|
||||
{
|
||||
var aiCombat = (fsmBehaviour.aiController as vIControlAICombat);
|
||||
aiCombat.ResetAttackTime();
|
||||
aiCombat.isInCombat = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void UpdateCombatState(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.currentTarget.transform == null) return;
|
||||
|
||||
if (controller != null)
|
||||
{
|
||||
if (controller.targetDistance > controller.attackDistance)
|
||||
EngageTarget(controller);
|
||||
else
|
||||
CombatMovement(controller);
|
||||
|
||||
ControlLookPoint(controller);
|
||||
HandleShotAttack(controller);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void HandleShotAttack(vIControlAICombat controller)
|
||||
{
|
||||
controller.AimToTarget();
|
||||
|
||||
if (controller.canAttack)
|
||||
controller.Attack();
|
||||
}
|
||||
|
||||
protected virtual void EngageTarget(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.currentTarget.transform == null)
|
||||
return;
|
||||
|
||||
|
||||
|
||||
if (!controller.animatorStateInfos.HasAnyTag("Attack", "LockMovement", "CustomAction"))
|
||||
{
|
||||
var movepoint = (controller.lastTargetPosition);
|
||||
controller.StrafeMoveTo(movepoint, movepoint - controller.transform.position,engageSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void CombatMovement(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.strafeCombatMovement)
|
||||
StrafeCombafeMovement(controller);
|
||||
else
|
||||
SimpleCombatMovement(controller);
|
||||
}
|
||||
|
||||
protected virtual void ControlLookPoint(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.currentTarget.transform == null || !controller.currentTarget.hasCollider)
|
||||
return;
|
||||
|
||||
var movepoint = (controller.lastTargetPosition);
|
||||
controller.LookTo(movepoint);
|
||||
}
|
||||
|
||||
protected virtual void SimpleCombatMovement(vIControlAICombat controller)
|
||||
{
|
||||
bool moveForward = controller.targetDistance > controller.combatRange * 0.8f;
|
||||
bool moveBackward = controller.targetDistance < controller.minDistanceOfTheTarget;
|
||||
var movepoint = (controller.lastTargetPosition);
|
||||
var forwardMovement = (movepoint - controller.transform.position).normalized * (moveForward ? 1 + controller.stopingDistance : (moveBackward ? -(1 + controller.stopingDistance) : 0));
|
||||
controller.StrafeMoveTo(controller.transform.position + forwardMovement, (movepoint - controller.transform.position).normalized,combatSpeed);
|
||||
|
||||
}
|
||||
|
||||
protected virtual void StrafeCombafeMovement(vIControlAICombat controller)
|
||||
{
|
||||
bool moveForward = controller.targetDistance > controller.combatRange * 0.8f;
|
||||
bool moveBackward = controller.targetDistance < controller.minDistanceOfTheTarget;
|
||||
var movepoint = (controller.lastTargetPosition);
|
||||
var forwardMovement = (movepoint - controller.transform.position).normalized * (moveForward ? 1 + controller.stopingDistance : (moveBackward ? -(1 + controller.stopingDistance) : 0));
|
||||
controller.StrafeMoveTo(controller.transform.position + (controller.transform.right * ((controller.stopingDistance + 1f)) * controller.strafeCombatSide) + forwardMovement, (movepoint - controller.transform.position).normalized,combatSpeed);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a0dfdec137ab1f45be406a6af5eaa0a
|
||||
timeCreated: 1527089883
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {fileID: 2800000, guid: b9d2a1010ab1f81469bfdc648fa4dbf7, type: 3}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,132 +0,0 @@
|
||||
using System;
|
||||
using Invector.vEventSystems;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("This Custom State is DEPRECATED, use the Action MeleeCombat instead", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vAISimpleCombatState : vAICombatState, vIStateAttackListener
|
||||
{
|
||||
public bool engageInStrafe = false;
|
||||
public vAIMovementSpeed engageSpeed = vAIMovementSpeed.Running;
|
||||
public vAIMovementSpeed combatSpeed = vAIMovementSpeed.Walking;
|
||||
public override Type requiredType
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(vIControlAIMelee);
|
||||
}
|
||||
}
|
||||
public vAISimpleCombatState()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
description = "Custom Combat State";
|
||||
#endif
|
||||
}
|
||||
|
||||
public override void OnStateEnter(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
base.OnStateEnter(fsmBehaviour);
|
||||
|
||||
if (fsmBehaviour.aiController is vIControlAICombat)
|
||||
{
|
||||
var aiCombat = (fsmBehaviour.aiController as vIControlAICombat);
|
||||
aiCombat.InitAttackTime();
|
||||
aiCombat.isInCombat = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnStateExit(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
base.OnStateExit(fsmBehaviour);
|
||||
if (fsmBehaviour.aiController is vIControlAICombat)
|
||||
{
|
||||
var aiCombat = (fsmBehaviour.aiController as vIControlAICombat);
|
||||
if (aiCombat.currentTarget.transform == null || aiCombat.currentTarget.isDead || !aiCombat.targetInLineOfSight) aiCombat.ResetAttackTime();
|
||||
aiCombat.isInCombat = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void UpdateCombatState(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.currentTarget.transform == null || controller.currentTarget.isLost)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (controller != null)
|
||||
{
|
||||
if (controller.canAttack)
|
||||
EngageTarget(controller);
|
||||
else CombatMovement(controller);
|
||||
ControlLookPoint(controller);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void EngageTarget(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.currentTarget.transform == null) return;
|
||||
|
||||
if (controller.targetDistance <= controller.attackDistance)
|
||||
{
|
||||
controller.Stop();
|
||||
controller.Attack();
|
||||
}
|
||||
else if (!controller.animatorStateInfos.HasAnyTag("Attack", "LockMovement", "CustomAction"))
|
||||
{
|
||||
if (engageInStrafe)
|
||||
controller.StrafeMoveTo(controller.currentTarget.transform.position, (controller.currentTarget.transform.position - controller.transform.position).normalized, engageSpeed);
|
||||
else controller.MoveTo(controller.currentTarget.transform.position, engageSpeed);
|
||||
}
|
||||
else controller.Stop();
|
||||
}
|
||||
|
||||
protected virtual void CombatMovement(vIControlAICombat controller)
|
||||
{
|
||||
|
||||
if (controller.strafeCombatMovement)
|
||||
StrafeCombatMovement(controller);
|
||||
else
|
||||
SimpleCombatMovement(controller);
|
||||
if (controller.canBlockInCombat)
|
||||
{
|
||||
controller.Blocking();
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void ControlLookPoint(vIControlAICombat controller)
|
||||
{
|
||||
if (controller.currentTarget.transform == null || !controller.currentTarget.hasCollider || !controller.targetInLineOfSight) return;
|
||||
controller.LookTo(controller.currentTarget.transform.position);
|
||||
}
|
||||
|
||||
protected virtual void SimpleCombatMovement(vIControlAICombat controller)
|
||||
{
|
||||
bool moveForward = controller.targetDistance > controller.combatRange * 0.8f;
|
||||
bool moveBackWard = controller.targetDistance < controller.minDistanceOfTheTarget;
|
||||
var forwardMovement = (controller.currentTarget.transform.position - controller.transform.position).normalized * (moveForward ? 1 + controller.stopingDistance : (moveBackWard ? -(1 + controller.stopingDistance) : 0));
|
||||
controller.StrafeMoveTo(controller.transform.position + forwardMovement, (controller.currentTarget.transform.position - controller.transform.position).normalized, combatSpeed);
|
||||
|
||||
}
|
||||
|
||||
protected virtual void StrafeCombatMovement(vIControlAICombat controller)
|
||||
{
|
||||
bool moveForward = controller.targetDistance > controller.combatRange * 0.8f;
|
||||
bool moveBackWard = controller.targetDistance < controller.minDistanceOfTheTarget;
|
||||
var forwardMovement = (controller.currentTarget.transform.position - controller.transform.position).normalized * (moveForward ? 1 + controller.stopingDistance : (moveBackWard ? -(1 + controller.stopingDistance) : 0));
|
||||
controller.StrafeMoveTo(controller.transform.position + (controller.transform.right * ((controller.stopingDistance + 1f)) * controller.strafeCombatSide) + forwardMovement, (controller.currentTarget.transform.position - controller.transform.position).normalized, combatSpeed);
|
||||
}
|
||||
|
||||
public virtual void OnReceiveAttack(vIControlAICombat controller, ref vDamage damage, vIMeleeFighter attacker, ref bool canBlock)
|
||||
{
|
||||
//HandleDefensiveCombat(controller, true);
|
||||
if (damage.damageValue > 0)
|
||||
if (attacker != null && attacker.character != null && !attacker.character.isDead)
|
||||
{
|
||||
controller.SetCurrentTarget(attacker.transform);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 51294ed6f48647f479682b46a1d18cf3
|
||||
timeCreated: 1527089894
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {fileID: 2800000, guid: b9d2a1010ab1f81469bfdc648fa4dbf7, type: 3}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -8,7 +8,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Detection/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/AICanSeeTargetDecision.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Health/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/AICheckHealth.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Behaviour/"; }
|
||||
}
|
||||
|
||||
public override string defaultName
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/AICheckState.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Detection/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/AICheckTargetDead.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Combat/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/AICheckTargetIsInCombatRange.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Combat/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/AICombatting.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/Editor/AICheckStateEditor.cs
|
||||
uploadId: 601882
|
||||
|
||||
30
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Decisions/IsInShotAngleDecision.cs
vendored
Normal file
30
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Decisions/IsInShotAngleDecision.cs
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("This is a IsInShotAngleDecision decision", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class IsInShotAngleDecision : vStateDecision
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Combat/"; }
|
||||
}
|
||||
|
||||
public override string defaultName
|
||||
{
|
||||
get { return "IsInShotAngleDecision"; }
|
||||
}
|
||||
public override Type requiredType => typeof(vIControlAIShooter);
|
||||
public override bool Decide(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
if (fsmBehaviour.aiController is vIControlAIShooter)
|
||||
{
|
||||
return (fsmBehaviour.aiController as vIControlAIShooter).IsInShotAngle;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Decisions/IsInShotAngleDecision.cs.meta
vendored
Normal file
18
Assets/ThirdParty/Invector-AIController/FSM/Scripts/Decisions/IsInShotAngleDecision.cs.meta
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 61eeca5d27f02df46a285da7490fbd2d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/IsInShotAngleDecision.cs
|
||||
uploadId: 601882
|
||||
@@ -1,48 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
|
||||
#if UNITY_EDITOR
|
||||
[vFSMHelpbox("Verify if you can see the target based on the Detection Settings of the AI Controller and Check if the AI Controller has received any Damage or a specific DamageType", UnityEditor.MessageType.Info)]
|
||||
#endif
|
||||
public class vAICanSeeOrCheckDamageTargetDecision : vStateDecision
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
}
|
||||
|
||||
public override string defaultName
|
||||
{
|
||||
get { return "Can See Or Check Damage"; }
|
||||
}
|
||||
|
||||
public List<string> damageTypeToCheck;
|
||||
|
||||
public override bool Decide(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
var canSee = CanSeeTarget(fsmBehaviour);
|
||||
var hasDamage = (HasDamage(fsmBehaviour));
|
||||
|
||||
return canSee || hasDamage;
|
||||
}
|
||||
|
||||
protected virtual bool HasDamage(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
if (fsmBehaviour.aiController == null) return false;
|
||||
var hasDamage = (fsmBehaviour.aiController.receivedDamage.isValid) && (damageTypeToCheck.Count == 0 || damageTypeToCheck.Contains(fsmBehaviour.aiController.receivedDamage.lasType));
|
||||
|
||||
if (fsmBehaviour.debugMode)
|
||||
{
|
||||
fsmBehaviour.SendDebug(Name + " " + (fsmBehaviour.aiController.receivedDamage.isValid) + " " + fsmBehaviour.aiController.receivedDamage.lastSender, this);
|
||||
}
|
||||
return hasDamage;
|
||||
}
|
||||
|
||||
protected virtual bool CanSeeTarget(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
return fsmBehaviour.aiController.targetInLineOfSight;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 50c776c71e52e174f92161c33199fe22
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,43 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public class vAICheckAnimatorParameterBool : vStateDecision
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Custom Example/"; }
|
||||
}
|
||||
|
||||
public override string defaultName
|
||||
{
|
||||
get { return "Check Animator Parameter Bool"; }
|
||||
}
|
||||
|
||||
protected enum CompareValueMethod
|
||||
{
|
||||
True, False
|
||||
}
|
||||
[SerializeField]
|
||||
protected CompareValueMethod compareMethod;
|
||||
public string parameterName = "Bool name";
|
||||
|
||||
public override bool Decide(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
bool boolvalue = fsmBehaviour.aiController.animator.GetBool(parameterName);
|
||||
return CompareBool(boolvalue);
|
||||
}
|
||||
|
||||
private bool CompareBool(bool value)
|
||||
{
|
||||
switch (compareMethod)
|
||||
{
|
||||
case CompareValueMethod.True:
|
||||
return value == true;
|
||||
case CompareValueMethod.False:
|
||||
return value == false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1b249d9fa5c892b4dae8afc5c5aa099d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,47 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
|
||||
public class vAICheckAnimatorParameterFloat : vStateDecision
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return "Custom Example/"; }
|
||||
}
|
||||
|
||||
public override string defaultName
|
||||
{
|
||||
get { return "Check Animator Parameter Float"; }
|
||||
}
|
||||
|
||||
protected enum CompareValueMethod
|
||||
{
|
||||
Greater, Less, Equal
|
||||
}
|
||||
[SerializeField]
|
||||
protected CompareValueMethod compareMethod;
|
||||
public float value;
|
||||
public string parameterName = "TurnOnSpotDir";
|
||||
|
||||
public override bool Decide(vIFSMBehaviourController fsmBehaviour)
|
||||
{
|
||||
float angle = fsmBehaviour.aiController.animator.GetFloat(parameterName);
|
||||
return CompareDistance(Mathf.Abs(angle), this.value);
|
||||
}
|
||||
|
||||
private bool CompareDistance(float distA, float distB)
|
||||
{
|
||||
switch (compareMethod)
|
||||
{
|
||||
case CompareValueMethod.Equal:
|
||||
return distA.Equals(distB);
|
||||
case CompareValueMethod.Greater:
|
||||
return distA > distB;
|
||||
case CompareValueMethod.Less:
|
||||
return distA < distB;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10fc04bb9c3cd5a4798fe861edc9fca6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -9,7 +9,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Health/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/vAICheckDamage.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Health/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/vAICheckMassiveDamage.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Detection/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
|
||||
@@ -10,3 +10,10 @@ MonoImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 123618
|
||||
packageName: Invector FSM AI Template
|
||||
packageVersion: 1.1.9a
|
||||
assetPath: Assets/Invector-FSMAIController/FSM/Scripts/Decisions/vAICheckTargetTag.cs
|
||||
uploadId: 601882
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
public override string categoryName
|
||||
{
|
||||
get { return ""; }
|
||||
get { return "Noise/"; }
|
||||
}
|
||||
public override string defaultName
|
||||
{
|
||||
@@ -26,7 +26,7 @@ namespace Invector.vCharacterController.AI.FSMBehaviour
|
||||
{
|
||||
if (fsmBehaviour.aiController.HasComponent<vAINoiseListener>())
|
||||
{
|
||||
var noiseListener = fsmBehaviour.aiController.GetAIComponent<vAINoiseListener>();
|
||||
var noiseListener = fsmBehaviour.aiController.GetAIComponent<vAINoiseListener>();
|
||||
if (specific) return noiseListener.IsListeningSpecificNoises(noiseTypes);
|
||||
else return noiseListener.IsListeningNoise();
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user