This commit is contained in:
parent
961ae8feb4
commit
11a8104c75
|
@ -12,7 +12,7 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 7a686a47eee2fa44cb0a34b5d86e4d5e, type: 3}
|
||||
m_Name: AI_Shooter
|
||||
m_EditorClassIdentifier:
|
||||
_serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_position":{"x":544.9802,"y":125.6692},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"0"},{"_action":{"sensor":{"_name":"Sensor","_targetVariableID":"d648241e-321f-48dd-a4e3-d661ee461283"},"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"$type":"BITKit.NodeCanvas.SmartTargetDetectionNode"},"_position":{"x":267.8417,"y":287.2277},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_condition":{"conditions":[{"variable":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"_invert":true,"$type":"NodeCanvas.Tasks.Conditions.CheckNull"},{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"$type":"BITKit.TargetIsAlive"}],"$type":"NodeCanvas.Framework.ConditionList"},"_position":{"x":550.1645,"y":275.5882},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"2"},{"_condition":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"maxDistance":{"_value":64.0},"layerMask":{"_value":{"value":1}},"awarnessDistance":{"_value":1.0},"viewAngle":{"_value":70.0},"offset":{"y":1.0},"$type":"NodeCanvas.Tasks.Conditions.CanSeeTarget"},"_position":{"x":446.8694,"y":498.0947},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"3"},{"dynamic":true,"_position":{"x":478.9857,"y":729.4525},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"4"},{"_action":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"repeat":{"_value":true},"$type":"BITKit.Node.LookTargetSmooth"},"_position":{"x":87.52032,"y":853.0034},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"5"},{"_condition":{"checkTarget":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"distance":{"_value":1.6},"$type":"NodeCanvas.Tasks.Conditions.CheckDistanceToGameObject"},"_position":{"x":324.6918,"y":862.5242},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"6"},{"_action":{"entity":{"_name":"Entity","_targetVariableID":"9c6ef538-dedf-4070-9feb-a71566e239b8"},"command":{"_value":"Melee"},"intParameter":{},"floatParameter":{},"stringParameter":{},"$type":"BITKit.InvokeEntityCommand"},"_position":{"x":238.2697,"y":986.7622},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_action":{"entity":{"_name":"Entity","_targetVariableID":"9c6ef538-dedf-4070-9feb-a71566e239b8"},"command":{"_value":"Fire"},"intParameter":{},"floatParameter":{},"stringParameter":{},"$type":"BITKit.InvokeEntityCommand"},"_position":{"x":428.3638,"y":987.4536},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"8"},{"_condition":{"checkTarget":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"distance":{"_value":6.0},"$type":"NodeCanvas.Tasks.Conditions.CheckDistanceToGameObject"},"_position":{"x":676.3502,"y":851.4033},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"9"},{"dynamic":true,"_position":{"x":583.298,"y":1056.772},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"10"},{"_condition":{"probability":{"_value":0.16},"maxValue":{"_value":1.0},"$type":"NodeCanvas.Tasks.Conditions.Probability"},"_position":{"x":458.5199,"y":1166.235},"$type":"NodeCanvas.BehaviourTrees.ConditionNode","$id":"11"},{"_action":{"speed":{"_name":"Aim
|
||||
_serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"dynamic":true,"_position":{"x":544.9802,"y":125.6692},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"0"},{"_action":{"sensor":{"_name":"Sensor","_targetVariableID":"d648241e-321f-48dd-a4e3-d661ee461283"},"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"$type":"BITKit.NodeCanvas.SmartTargetDetectionNode"},"_position":{"x":267.8417,"y":287.2277},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_condition":{"conditions":[{"variable":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"_invert":true,"$type":"NodeCanvas.Tasks.Conditions.CheckNull"},{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"$type":"BITKit.TargetIsAlive"}],"$type":"NodeCanvas.Framework.ConditionList"},"_position":{"x":550.1645,"y":275.5882},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"2"},{"_condition":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"maxDistance":{"_value":64.0},"layerMask":{"_value":{"value":1}},"awarnessDistance":{"_value":1.0},"viewAngle":{"_value":70.0},"offset":{"y":1.0},"$type":"NodeCanvas.Tasks.Conditions.CanSeeTarget"},"_position":{"x":446.8694,"y":498.0947},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"3"},{"dynamic":true,"_position":{"x":478.9857,"y":729.4525},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"4"},{"_action":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"repeat":{},"$type":"BITKit.Node.LookTargetSmooth"},"_position":{"x":87.52032,"y":853.0034},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"5"},{"_condition":{"checkTarget":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"distance":{"_value":1.6},"$type":"NodeCanvas.Tasks.Conditions.CheckDistanceToGameObject"},"_position":{"x":324.6918,"y":862.5242},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"6"},{"_action":{"entity":{"_name":"Entity","_targetVariableID":"9c6ef538-dedf-4070-9feb-a71566e239b8"},"command":{"_value":"Melee"},"intParameter":{},"floatParameter":{},"stringParameter":{},"$type":"BITKit.InvokeEntityCommand"},"_position":{"x":238.2697,"y":986.7622},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_action":{"entity":{"_name":"Entity","_targetVariableID":"9c6ef538-dedf-4070-9feb-a71566e239b8"},"command":{"_value":"Fire"},"intParameter":{},"floatParameter":{},"stringParameter":{},"$type":"BITKit.InvokeEntityCommand"},"_position":{"x":428.3638,"y":987.4536},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"8"},{"_condition":{"checkTarget":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"distance":{"_value":6.0},"$type":"NodeCanvas.Tasks.Conditions.CheckDistanceToGameObject"},"_position":{"x":676.3502,"y":851.4033},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"9"},{"dynamic":true,"_position":{"x":583.298,"y":1056.772},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"10"},{"_condition":{"probability":{"_value":0.16},"maxValue":{"_value":1.0},"$type":"NodeCanvas.Tasks.Conditions.Probability"},"_position":{"x":458.5199,"y":1166.235},"$type":"NodeCanvas.BehaviourTrees.ConditionNode","$id":"11"},{"_action":{"speed":{"_name":"Aim
|
||||
Move Speed","_targetVariableID":"85ddc77d-9e68-4489-bd7d-e9cb23661f86"},"keepDistance":{"_value":0.1},"minWanderDistance":{"_value":0.64},"maxWanderDistance":{"_value":1.0},"$type":"NodeCanvas.Tasks.Actions.Wander"},"_position":{"x":615.5132,"y":1169.973},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"12"},{"dynamic":true,"_position":{"x":810.8378,"y":1050.127},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"13"},{"_action":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"speed":{"_name":"Basic
|
||||
Move Speed","_targetVariableID":"efcf1d0b-020c-4c56-af5e-2ae04d2bbf29"},"fledDistance":{"_value":6.0},"lookAhead":{"_value":6.0},"$type":"NodeCanvas.Tasks.Actions.Flee"},"_position":{"x":792.3795,"y":1173.204},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"14"},{"dynamic":true,"_position":{"x":1072.855,"y":796.6577},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"15"},{"_condition":{"targetPosition":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"savePathAs":{"_name":""},"$type":"NodeCanvas.Tasks.Conditions.PathExists"},"_position":{"x":1176.26,"y":893.3289},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"16"},{"_position":{"x":1103.0,"y":1006.667},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"17"},{"_condition":{"LOSTarget":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"layerMask":{"_value":{"value":1}},"offset":{"y":1.0},"saveDistanceAs":{"_name":""},"$type":"NodeCanvas.Tasks.Conditions.CheckLOS"},"_position":{"x":1189.0,"y":1100.667},"$type":"NodeCanvas.BehaviourTrees.BinarySelector","$id":"18"},{"dynamic":true,"_position":{"x":1077.894,"y":1254.667},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"19"},{"_action":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"speed":{"_name":"Basic
|
||||
Move Speed","_targetVariableID":"efcf1d0b-020c-4c56-af5e-2ae04d2bbf29"},"keepDistance":{"_value":4.0},"waitUntilFinish":{},"$type":"NodeCanvas.Tasks.Actions.MoveToGameObject"},"_position":{"x":982.2366,"y":1440.21},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"20"},{"_action":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"repeat":{},"$type":"BITKit.Node.LookTargetSmooth"},"_position":{"x":1139.833,"y":1440.344},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"21"},{"dynamic":true,"_position":{"x":1339.577,"y":1254.394},"$type":"NodeCanvas.BehaviourTrees.Parallel","$id":"22"},{"_action":{"target":{"_name":"Target","_targetVariableID":"7e434d61-d448-41a6-91d9-50c35408f293"},"speed":{"_name":"Basic
|
||||
|
@ -23,7 +23,7 @@ MonoBehaviour:
|
|||
_version: 3.29
|
||||
_category:
|
||||
_comments:
|
||||
_translation: {x: -222, y: -720}
|
||||
_zoomFactor: 0.6848334
|
||||
_translation: {x: 73, y: -441}
|
||||
_zoomFactor: 0.6300746
|
||||
_haltSerialization: 0
|
||||
_externalSerializationFile: {fileID: 0}
|
||||
|
|
|
@ -233,6 +233,7 @@ namespace BITKit.Entities
|
|||
{
|
||||
public IOptional<float> Zoom { get; } = new Optional<float>(){Value = 1};
|
||||
public float Stable { get; set; }
|
||||
public float Aim { get; set; }
|
||||
public bool AllowAttack { get; set; }
|
||||
public bool AllowScope { get; set; }
|
||||
|
||||
|
@ -331,14 +332,14 @@ namespace BITKit.Entities
|
|||
|
||||
if (virtualCamera is not null)
|
||||
{
|
||||
virtualCamera.m_Lens.FieldOfView =
|
||||
var targetFov =
|
||||
Mathf.Lerp(
|
||||
virtualCamera.m_Lens.FieldOfView,
|
||||
Zoom.Allow ?
|
||||
Mathf.Rad2Deg * CalcZoomFOV(Mathf.Deg2Rad * 60f, Zoom.Value) : PlayerConfig.Singleton.Fov,
|
||||
16*deltaTime
|
||||
);
|
||||
|
||||
virtualCamera.m_Lens.FieldOfView = Mathf.Lerp(PlayerConfig.Singleton.Fov, targetFov, Aim);
|
||||
|
||||
float CalcZoomFOV(float baseFOV, float zoom)
|
||||
{
|
||||
|
|
|
@ -407,6 +407,7 @@ namespace BITFALL.Guns
|
|||
_equipService.Zoom.Allow = CurrentState is Aim;
|
||||
_equipService.Zoom.Value =Mathf.Lerp(1,_gun.InitialAimZoom, _aim);
|
||||
_equipService.AllowScope = _aim > 0.5f && _gun.IsScopeAim;
|
||||
_equipService.Aim = _aim;
|
||||
|
||||
|
||||
if (breathingAdditive.Allow)
|
||||
|
|
|
@ -15,20 +15,20 @@ namespace BITFALL.Rig{
|
|||
public class TickOverrideTranformService : MonoBehaviour
|
||||
{
|
||||
//[BurstCompile]
|
||||
public struct CopyTransformJob : IJobParallelForTransform
|
||||
{
|
||||
[Unity.Collections.ReadOnly]
|
||||
public NativeArray<float3> positions;
|
||||
[Unity.Collections.ReadOnly]
|
||||
public NativeArray<quaternion> rotations;
|
||||
|
||||
|
||||
// The code actually running on the job
|
||||
public void Execute(int index, TransformAccess transform)
|
||||
{
|
||||
transform.SetPositionAndRotation(positions[index],rotations[index]);
|
||||
}
|
||||
}
|
||||
// public struct CopyTransformJob : IJobParallelForTransform
|
||||
// {
|
||||
// [Unity.Collections.ReadOnly]
|
||||
// public NativeArray<float3> positions;
|
||||
// [Unity.Collections.ReadOnly]
|
||||
// public NativeArray<quaternion> rotations;
|
||||
//
|
||||
//
|
||||
// // The code actually running on the job
|
||||
// public void Execute(int index, TransformAccess transform)
|
||||
// {
|
||||
// transform.SetPositionAndRotation(positions[index],rotations[index]);
|
||||
// }
|
||||
// }
|
||||
public static void Register(int id,TickOverrideTransform tickOverrideTransform)
|
||||
{
|
||||
Dictionary.Add(id,tickOverrideTransform);
|
||||
|
@ -47,11 +47,11 @@ namespace BITFALL.Rig{
|
|||
|
||||
[SerializeReference, SubclassSelector] private ITicker ticker;
|
||||
|
||||
private TransformAccessArray m_AccessArray;
|
||||
private NativeArray<quaternion> _rotations;
|
||||
private NativeArray<float3> _positions;
|
||||
private JobHandle _jobHandle;
|
||||
private InitializationState _initializationState;
|
||||
// private TransformAccessArray m_AccessArray;
|
||||
// private NativeArray<quaternion> _rotations;
|
||||
// private NativeArray<float3> _positions;
|
||||
// private JobHandle _jobHandle;
|
||||
// private InitializationState _initializationState;
|
||||
private void OnEnable()
|
||||
{
|
||||
ticker.Add(Tick);
|
||||
|
@ -60,27 +60,40 @@ namespace BITFALL.Rig{
|
|||
{
|
||||
ticker.Remove(Tick);
|
||||
}
|
||||
|
||||
// private void OnDestroy()
|
||||
// {
|
||||
// if (_initializationState is not InitializationState.Initializing) return;
|
||||
// _jobHandle.Complete();
|
||||
// _rotations.Dispose();
|
||||
// _positions.Dispose();
|
||||
// }
|
||||
|
||||
private void Tick(float obj)
|
||||
{
|
||||
switch (_initializationState)
|
||||
{
|
||||
case InitializationState.Initializing when _jobHandle.IsCompleted:
|
||||
_jobHandle.Complete();
|
||||
_rotations.Dispose();
|
||||
_positions.Dispose();
|
||||
_initializationState = InitializationState.Initialized;
|
||||
break;
|
||||
case InitializationState.None:
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
// switch (_initializationState)
|
||||
// {
|
||||
// case InitializationState.Initializing when _jobHandle.IsCompleted:
|
||||
// _jobHandle.Complete();
|
||||
// _rotations.Dispose();
|
||||
// _positions.Dispose();
|
||||
// _initializationState = InitializationState.Initialized;
|
||||
// break;
|
||||
// case InitializationState.None:
|
||||
// break;
|
||||
// default:
|
||||
// return;
|
||||
// }
|
||||
|
||||
if (IsDirty)
|
||||
{
|
||||
var newLength = Dictionary.Count;
|
||||
Sources = new Transform[newLength];
|
||||
Targets = new Transform[newLength];
|
||||
|
||||
//_positions = new NativeArray<float3>(newLength, Allocator.Persistent);
|
||||
//_rotations = new NativeArray<quaternion>(newLength, Allocator.Persistent);
|
||||
|
||||
var index = 0;
|
||||
foreach (var x in Dictionary.Values)
|
||||
{
|
||||
|
@ -94,27 +107,34 @@ namespace BITFALL.Rig{
|
|||
|
||||
if(length is 0) return;
|
||||
|
||||
m_AccessArray = new TransformAccessArray(length);
|
||||
m_AccessArray.SetTransforms(Sources);
|
||||
// m_AccessArray = new TransformAccessArray(length);
|
||||
// m_AccessArray.SetTransforms(Sources);
|
||||
|
||||
_positions = new NativeArray<float3>(length, Allocator.Persistent);
|
||||
_rotations = new NativeArray<quaternion>(length, Allocator.Persistent);
|
||||
|
||||
var i = 0;
|
||||
foreach (var x in Targets)
|
||||
for (var j = 0; j < length; j++)
|
||||
{
|
||||
_positions[i] = x.position;
|
||||
_rotations[i] = x.rotation;
|
||||
i++;
|
||||
Sources[j].SetPositionAndRotation(Targets[j].position,Targets[j].rotation);
|
||||
}
|
||||
var _job = new CopyTransformJob()
|
||||
{
|
||||
positions = _positions,
|
||||
rotations = _rotations
|
||||
};
|
||||
_jobHandle = _job.Schedule(m_AccessArray);
|
||||
|
||||
_initializationState = InitializationState.Initializing;
|
||||
// foreach (var x in Targets)
|
||||
// {
|
||||
// _positions[i] = x.position;
|
||||
// _rotations[i] = x.rotation;
|
||||
// i++;
|
||||
// }
|
||||
//
|
||||
// foreach (var x in Sources)
|
||||
// {
|
||||
// x.position = _positions[i];
|
||||
// x.rotation = _rotations[i];
|
||||
// }
|
||||
// var _job = new CopyTransformJob()
|
||||
// {
|
||||
// positions = _positions,
|
||||
// rotations = _rotations
|
||||
// };
|
||||
// _jobHandle = _job.Schedule(m_AccessArray);
|
||||
//
|
||||
// _initializationState = InitializationState.Initializing;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace BITFALL.Player.Equip
|
|||
{
|
||||
IOptional<float> Zoom { get; }
|
||||
float Stable { get; set; }
|
||||
float Aim { get; set; }
|
||||
bool AllowAttack { get; set; }
|
||||
bool AllowScope { get; set; }
|
||||
IValidHandle AllowEquip { get; }
|
||||
|
|
|
@ -42,8 +42,8 @@ namespace NodeCanvas.Tasks.Conditions
|
|||
if ( Vector3.Distance(agent.position, t.position) <= awarnessDistance.value ) {
|
||||
if ( Physics.Linecast(agent.position + offset, t.position + offset, out hit, layerMask.value) ) {
|
||||
if ( hit.collider != t.GetComponent<Collider>() ) {
|
||||
return false;
|
||||
report = hit.collider.name;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
report = "Good Vigil Direct Hit";
|
||||
|
@ -80,7 +80,7 @@ namespace NodeCanvas.Tasks.Conditions
|
|||
}
|
||||
}
|
||||
|
||||
report = "Good Vigil";
|
||||
report = "No Obstacle";
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue