修复行为树一些问题
This commit is contained in:
parent
2c4fc113f2
commit
b66f735c92
@ -38,6 +38,7 @@ RenderSettings:
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 0}
|
||||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
@ -12269,10 +12270,10 @@ RectTransform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1243696580}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 112.445, y: -35}
|
||||
m_SizeDelta: {x: 84.89, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &85187974
|
||||
MonoBehaviour:
|
||||
@ -60895,6 +60896,84 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 394711511}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &395918545
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 395918548}
|
||||
- component: {fileID: 395918547}
|
||||
- component: {fileID: 395918546}
|
||||
m_Layer: 0
|
||||
m_Name: AIBT
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &395918546
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 395918545}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b98a6db0b653f764eac834f85857a9dd, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_parentBlackboard: {fileID: 11400000, guid: 54af86fc7df8ad84ba30333205e32a2c, type: 2}
|
||||
_serializedBlackboard: '{"_variables":{}}'
|
||||
_objectReferences: []
|
||||
_serializedVariables: []
|
||||
--- !u!114 &395918547
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 395918545}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: aad115aca74ce3c4891b3f6de0b4aae8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_serializedExposedParameters: []
|
||||
_boundGraphSerialization:
|
||||
_boundGraphObjectReferences: []
|
||||
_boundGraphSource:
|
||||
_version: 0
|
||||
_category:
|
||||
_comments:
|
||||
_translation: {x: 0, y: 0}
|
||||
_zoomFactor: 1
|
||||
_firstActivation: 2
|
||||
_enableAction: 0
|
||||
_disableAction: 0
|
||||
_lockBoundGraphPrefabOverrides: 1
|
||||
_preInitializeSubGraphs: 0
|
||||
_updateMode: 3
|
||||
_graph: {fileID: 11400000, guid: be76ba4e003c482489c2bb30da007cb8, type: 2}
|
||||
_blackboard: {fileID: 395918546}
|
||||
--- !u!4 &395918548
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 395918545}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 1268.7635, y: 605.7429, z: 7.64894}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &397028032
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -322673,3 +322752,4 @@ SceneRoots:
|
||||
- {fileID: 727821838}
|
||||
- {fileID: 656929328}
|
||||
- {fileID: 1136548652}
|
||||
- {fileID: 395918548}
|
||||
|
||||
@ -257,10 +257,16 @@ namespace Logic.AI
|
||||
}
|
||||
CalculateCityStrategy();
|
||||
|
||||
var count = 0;
|
||||
while (true)
|
||||
{
|
||||
CalculateLegionStrategy();
|
||||
if (CalculateFreeUnitStrategy()) break;
|
||||
if (CalculateLegionStrategy()) if (CalculateFreeUnitStrategy()) break;
|
||||
count++;
|
||||
if (count > 20)
|
||||
{
|
||||
Debug.LogError($"死循环了");
|
||||
break;
|
||||
}
|
||||
}
|
||||
TargetParam.OnParamChanged();
|
||||
}
|
||||
@ -282,8 +288,9 @@ namespace Logic.AI
|
||||
}
|
||||
|
||||
// 计算军团战略
|
||||
public void CalculateLegionStrategy()
|
||||
public bool CalculateLegionStrategy()
|
||||
{
|
||||
foreach (var kv in StrategyLegion) kv.Value.Clear();
|
||||
LegionUnits.Clear();
|
||||
FreeUnits.Clear();
|
||||
LegionScore.Clear();
|
||||
@ -393,7 +400,7 @@ namespace Logic.AI
|
||||
if (isFinish) continue;
|
||||
}
|
||||
|
||||
if (LegionTargetCity.Count == LegionUnits.Count) return;
|
||||
if (LegionTargetCity.Count == LegionUnits.Count) return true;
|
||||
var waitLegions = new List<uint>();
|
||||
foreach (var kv in LegionUnits)
|
||||
{
|
||||
@ -423,7 +430,7 @@ namespace Logic.AI
|
||||
StrategyLegion[Strategy.Defend].Add(result.LegionId);
|
||||
}
|
||||
|
||||
if (LegionTargetCity.Count == LegionUnits.Count) return;
|
||||
if (LegionTargetCity.Count == LegionUnits.Count) return true;
|
||||
uint targetId = 0;
|
||||
foreach (var city in selfCity)
|
||||
{
|
||||
@ -457,7 +464,7 @@ namespace Logic.AI
|
||||
StrategyLegion[Strategy.Attack].Add(result.LegionId);
|
||||
}
|
||||
|
||||
if (LegionTargetCity.Count == LegionUnits.Count) return;
|
||||
if (LegionTargetCity.Count == LegionUnits.Count) return true;
|
||||
uint targetId = 0;
|
||||
foreach (var city in Map.CityMap.CityList)
|
||||
{
|
||||
@ -504,6 +511,8 @@ namespace Logic.AI
|
||||
LegionUnits[legionId][0].LegionId = 0;
|
||||
FreeUnits.Add(LegionUnits[legionId][0]);
|
||||
LegionUnits.Remove(legionId);
|
||||
Debug.Log($"解散军团{legionId}");
|
||||
return false;
|
||||
}
|
||||
|
||||
StrategyLegion[Strategy.Development].Add(legionId);
|
||||
@ -524,9 +533,12 @@ namespace Logic.AI
|
||||
maxUnit.LegionId = 0;
|
||||
FreeUnits.Add(maxUnit);
|
||||
LegionUnits[legionId].Remove(maxUnit);
|
||||
Debug.Log($"{legionId} 军团抛弃小兵 {maxUnit.Id}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// 计算自由人策略
|
||||
@ -625,6 +637,7 @@ namespace Logic.AI
|
||||
|
||||
if (legion != 0)
|
||||
{
|
||||
Debug.Log($"加入军团{legion}");
|
||||
unit.LegionId = legion;
|
||||
return false;
|
||||
}
|
||||
@ -665,12 +678,13 @@ namespace Logic.AI
|
||||
|
||||
if (CountryStrategy == Strategy.Attack || CountryStrategy == Strategy.Defend)
|
||||
{
|
||||
uint legionId = 0;
|
||||
uint legionId = 1;
|
||||
foreach (var kv in LegionUnits)
|
||||
{
|
||||
if (legionId <= kv.Key) legionId = kv.Key + 1;
|
||||
}
|
||||
unit.LegionId = legionId;
|
||||
Debug.Log($"成立");
|
||||
return false;
|
||||
}
|
||||
StrategyUnit[Strategy.Development].Add(unit);
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
using System.Collections.Generic;
|
||||
using Logic.Action;
|
||||
using RuntimeData;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Logic.AI
|
||||
{
|
||||
@ -276,6 +277,7 @@ namespace Logic.AI
|
||||
{
|
||||
if (!data.Map.GridMap.GetGridDataByGid(gridId, out var grid)) continue;
|
||||
data.TargetParam.GridData = grid;
|
||||
data.TargetParam.OnParamChanged();
|
||||
foreach (var action in actions)
|
||||
{
|
||||
if (!action.CheckCan(data.TargetParam)) continue;
|
||||
@ -326,10 +328,10 @@ namespace Logic.AI
|
||||
foreach (var grid in data.Map.GridMap.GridList)
|
||||
{
|
||||
var result = Main.UnitLogic.CheckUnitCanMoveOrAttack(data.Map, data.TargetParam.UnitData, grid);
|
||||
if (result != MoveAttackType.Move) continue;
|
||||
if (result != MoveAttackType.Move && result != MoveAttackType.MoveToPort && result != MoveAttackType.MoveAshore) continue;
|
||||
if (data.TargetParam.UnitData.MP <= 0) continue;
|
||||
data.TargetParam.GridData = grid;
|
||||
|
||||
data.TargetParam.OnParamChanged();
|
||||
foreach (var action in actions)
|
||||
{
|
||||
if (!action.CheckCan(data.TargetParam)) continue;
|
||||
@ -342,6 +344,7 @@ namespace Logic.AI
|
||||
{
|
||||
if (data.TargetParam.UnitData == null) return;
|
||||
if (!data.TargetParam.UnitData.Alive) return;
|
||||
if (data.TargetParam.UnitData.AP <= 0) return;
|
||||
data.TargetParam.MainObjectType = ActionLogicFactory.GetMainObjectType(type);
|
||||
|
||||
Main.UnitLogic.CalcUnitMoveInfo(data.Map, data.TargetParam.UnitData.Id);
|
||||
@ -353,6 +356,7 @@ namespace Logic.AI
|
||||
|
||||
data.TargetParam.GridData = grid;
|
||||
data.TargetParam.TargetUnitData = targetUnit;
|
||||
data.TargetParam.OnParamChanged();
|
||||
|
||||
foreach (var action in actions)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user