From 0251aa5376973c8cd6baa413234206191f34f946 Mon Sep 17 00:00:00 2001 From: Antoine H Date: Wed, 2 Dec 2020 17:57:44 +0100 Subject: [PATCH] Limitation de transports/distribution d'objets avec tag --- .../Arts/Temporaires/Animations/oldman.anim | 97 +++++++++++++ .../Temporaires/Animations/oldman.anim.meta | 8 + .../Animations/oldman_animator.controller | 72 +++++++++ .../oldman_animator.controller.meta | 8 + Assets/Scenes/Tests/SampleScene.unity | 137 +++++++++++++++++- Assets/Scripts/Tavernkeeper_controller.cs | 42 ++++-- ProjectSettings/TagManager.asset | 4 +- 7 files changed, 350 insertions(+), 18 deletions(-) create mode 100644 Assets/Arts/Temporaires/Animations/oldman.anim create mode 100644 Assets/Arts/Temporaires/Animations/oldman.anim.meta create mode 100644 Assets/Arts/Temporaires/Animations/oldman_animator.controller create mode 100644 Assets/Arts/Temporaires/Animations/oldman_animator.controller.meta diff --git a/Assets/Arts/Temporaires/Animations/oldman.anim b/Assets/Arts/Temporaires/Animations/oldman.anim new file mode 100644 index 0000000..9c2f75a --- /dev/null +++ b/Assets/Arts/Temporaires/Animations/oldman.anim @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: oldman + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 1043955752247241622, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + - time: 0.125 + value: {fileID: -2851636055890851992, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + - time: 0.25 + value: {fileID: 6816745340182635029, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + - time: 0.375 + value: {fileID: 6413323737280572520, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + - time: 0.5 + value: {fileID: -7317981503661854123, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + - time: 0.625 + value: {fileID: -8571173956545197467, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + - time: 0.75 + value: {fileID: 6999907631220926573, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + - time: 0.875 + value: {fileID: -6262356758480172135, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + m_SampleRate: 8 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 1043955752247241622, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + - {fileID: -2851636055890851992, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + - {fileID: 6816745340182635029, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + - {fileID: 6413323737280572520, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + - {fileID: -7317981503661854123, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + - {fileID: -8571173956545197467, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + - {fileID: 6999907631220926573, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + - {fileID: -6262356758480172135, guid: 02e943da6e155874dbabb79c35c05b82, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Arts/Temporaires/Animations/oldman.anim.meta b/Assets/Arts/Temporaires/Animations/oldman.anim.meta new file mode 100644 index 0000000..d06ef67 --- /dev/null +++ b/Assets/Arts/Temporaires/Animations/oldman.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9548536878b3c884282e98f25bbc699b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Arts/Temporaires/Animations/oldman_animator.controller b/Assets/Arts/Temporaires/Animations/oldman_animator.controller new file mode 100644 index 0000000..e90141b --- /dev/null +++ b/Assets/Arts/Temporaires/Animations/oldman_animator.controller @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1107 &-8547104927243203257 +AnimatorStateMachine: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 7592019148465692952} + m_Position: {x: 200, y: 0, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 7592019148465692952} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: oldman_animator + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -8547104927243203257} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1102 &7592019148465692952 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: oldman + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 9548536878b3c884282e98f25bbc699b, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Arts/Temporaires/Animations/oldman_animator.controller.meta b/Assets/Arts/Temporaires/Animations/oldman_animator.controller.meta new file mode 100644 index 0000000..7f48048 --- /dev/null +++ b/Assets/Arts/Temporaires/Animations/oldman_animator.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7078733c7320e4542911d235520f6da0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Tests/SampleScene.unity b/Assets/Scenes/Tests/SampleScene.unity index 0bd56b1..7a3be70 100644 --- a/Assets/Scenes/Tests/SampleScene.unity +++ b/Assets/Scenes/Tests/SampleScene.unity @@ -124,6 +124,136 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &107140165 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 107140168} + - component: {fileID: 107140167} + - component: {fileID: 107140166} + - component: {fileID: 107140169} + m_Layer: 0 + m_Name: Oldman + m_TagString: Client + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!95 &107140166 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107140165} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 7078733c7320e4542911d235520f6da0, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!212 &107140167 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107140165} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 1043955752247241622, guid: 02e943da6e155874dbabb79c35c05b82, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.64, y: 0.64} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &107140168 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107140165} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.0483304, y: -0.39462146, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &107140169 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107140165} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0.0022666454, y: 0.25198603} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0} + oldSize: {x: 0.64, y: 0.64} + newSize: {x: 0.64, y: 0.64} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.44506907, y: 0.50397205} + m_EdgeRadius: 0 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -220,7 +350,7 @@ GameObject: - component: {fileID: 698542425} m_Layer: 0 m_Name: Chicken - m_TagString: Untagged + m_TagString: Grabable m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -329,6 +459,11 @@ PrefabInstance: propertyPath: m_Name value: Tavernkeeper objectReference: {fileID: 0} + - target: {fileID: 5841415790350674204, guid: dc287deb81f09d8419a5051e1d177e74, + type: 3} + propertyPath: m_Constraints + value: 4 + objectReference: {fileID: 0} - target: {fileID: 5841415790350674206, guid: dc287deb81f09d8419a5051e1d177e74, type: 3} propertyPath: m_RootOrder diff --git a/Assets/Scripts/Tavernkeeper_controller.cs b/Assets/Scripts/Tavernkeeper_controller.cs index 2ebd9b4..22e9e8f 100644 --- a/Assets/Scripts/Tavernkeeper_controller.cs +++ b/Assets/Scripts/Tavernkeeper_controller.cs @@ -5,7 +5,7 @@ using UnityEngine; public class Tavernkeeper_controller : MonoBehaviour { public float mvt_speed = 5.0f; //Movement speed - + public float action_dist = 1.5f; //Action distance IDictionary hand_container; @@ -81,25 +81,35 @@ public class Tavernkeeper_controller : MonoBehaviour void handAction(string hand) { - //Empty hand : try grab - if(hand_container[hand] is null) + // Test collision of ray from tavernkeeper center (A verifier) at action_dist unit distance + RaycastHit2D hit = Physics2D.Raycast(rigidbody2d.position + Vector2.up * 0.2f, lookDirection, action_dist); + if (hit.collider != null) { - // Test collision of ray from tavernkeeper center at 1.5 unit distance - RaycastHit2D hit = Physics2D.Raycast(rigidbody2d.position + Vector2.up * 0.2f, lookDirection, 1.5f); - if (hit.collider != null) + GameObject hit_object = hit.collider.gameObject; + // Debug.Log("Raycast has hit the object " + hit_object+ hit_object.tag); + if (hit_object != null) { - // Debug.Log("Raycast has hit the object " + hit.collider.gameObject); - GameObject hit_object = hit.collider.gameObject; - if (hit_object != null) + //Empty hand : try grab grabable object + if(hand_container[hand] is null) { - // hit_object.transform.SetParent(transform); - // hit_object.transform.localPosition = new Vector2(-0.2f,0.2f); - hit_object.SetActive(false); - hand_container[hand]=hit_object; - } - } + if(hit_object.tag == "Grabable") //by tag or with parent-name ? + { + // hit_object.transform.SetParent(transform); + // hit_object.transform.localPosition = new Vector2(-0.2f,0.2f); + hit_object.SetActive(false); + hand_container[hand]=hit_object; + } + } + //Full hand : try give to client + else if(hit_object.tag == "Client") //by tag or with parent-name ? + { + Debug.Log("Give "+ hand_container[hand]+" to "+hit_object); + Destroy(hand_container[hand]); + } + } } - else //Full hand : drop + //Full hand : drop + else if (hand_container[hand] != null) { // Debug.Log("Hand full with "+ hand_container[hand]); // hand_container[hand].transform.SetParent(null); diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..4fd05a1 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -3,7 +3,9 @@ --- !u!78 &1 TagManager: serializedVersion: 2 - tags: [] + tags: + - Client + - Grabable layers: - Default - TransparentFX