From 482fc2c17871a339631ee37c1dd8ec46ec120f84 Mon Sep 17 00:00:00 2001 From: Ader Alisma 01 Date: Fri, 23 Jun 2023 14:53:21 -0400 Subject: [PATCH] =?UTF-8?q?ResourceMaker=20d=C3=A9place=20la=20ressource?= =?UTF-8?q?=20=C3=A0=20ramasser=20vers=20un=20point=20fixe=20avant=20d'aug?= =?UTF-8?q?menter=20la=20quantit=C3=A9=20de=20ressources=20du=20joueur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ResourceTile produit des yields que lorsqu'une yield prefab a été déterminé --- Assets/Scripts/Resource/ResourceMaker.cs | 52 ++++++++++++++++-------- Assets/Scripts/Tiles/ResourceTile.cs | 14 ++++--- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/Assets/Scripts/Resource/ResourceMaker.cs b/Assets/Scripts/Resource/ResourceMaker.cs index aa2f870..db117ae 100644 --- a/Assets/Scripts/Resource/ResourceMaker.cs +++ b/Assets/Scripts/Resource/ResourceMaker.cs @@ -10,29 +10,49 @@ public class ResourceMaker : MonoBehaviour [SerializeField] private Enum.ResourceChoice _resourceChoice; private ResourceManager _resourceManagerInstance; + [SerializeField] + private Vector2 _endPosition; + private Vector2 _startPosition; + private float _desiredTime = 1.5f; + private float _timePassed = 0f; + private bool _isPlaying = false; private void Start() { _resourceManagerInstance = ResourceManager.Instance; + _startPosition = transform.position; + } + + private void Update() + { + if (_isPlaying) + { + _timePassed += Time.deltaTime; + float duration = _timePassed / _desiredTime; + duration = duration * duration * (3.0f - 2.0f * duration); + transform.position = Vector2.Lerp(_startPosition, _endPosition, duration); + if(Vector2.Distance(transform.position,_endPosition) < 0.01f) + { + _isPlaying = false; + switch (_resourceChoice) + { + case Enum.ResourceChoice.Rock: + _resourceManagerInstance.RockAmount = _resourceMakingAmount; + break; + case Enum.ResourceChoice.Wood: + _resourceManagerInstance.WoodAmount = _resourceMakingAmount; + break; + case Enum.ResourceChoice.Food: + _resourceManagerInstance.FoodAmount = _resourceMakingAmount; + break; + } + Destroy(gameObject); + } + } } /// /// D'après le choix de resource à générer, choisi le prefab à instancier /// - public void GenerateResource() - { - switch (_resourceChoice) - { - case Enum.ResourceChoice.Rock: - _resourceManagerInstance.RockAmount = _resourceMakingAmount; - break; - case Enum.ResourceChoice.Wood: - _resourceManagerInstance.WoodAmount = _resourceMakingAmount; - break; - case Enum.ResourceChoice.Food: - _resourceManagerInstance.FoodAmount = _resourceMakingAmount; - break; - } - Destroy(gameObject); - } + public void GenerateResource(){_isPlaying = true;} } diff --git a/Assets/Scripts/Tiles/ResourceTile.cs b/Assets/Scripts/Tiles/ResourceTile.cs index 7a7ab28..6f594a1 100644 --- a/Assets/Scripts/Tiles/ResourceTile.cs +++ b/Assets/Scripts/Tiles/ResourceTile.cs @@ -23,12 +23,14 @@ public class ResourceTile : LevelTile { _yieldCounter += Time.deltaTime * _yieldSpeed; if (_yieldCounter < 1) return; - - _yieldCounter = 0; - float rangeConfig = 0.5f + _randomPositionConfig; - Vector3 yieldPosition = new Vector3(Position.x + Random.Range(-rangeConfig, rangeConfig), Position.y, Position.z); - var yielded = Instantiate(_yieldPrefab, yieldPosition, Quaternion.identity); - yielded.transform.SetParent(LevelManager.Instance.LevelTransform); + if(_yieldPrefab != null) + { + _yieldCounter = 0; + float rangeConfig = 0.5f + _randomPositionConfig; + Vector3 yieldPosition = new Vector3(Position.x + Random.Range(-rangeConfig, rangeConfig), Position.y, Position.z); + var yielded = Instantiate(_yieldPrefab, yieldPosition, Quaternion.identity); + yielded.transform.SetParent(LevelManager.Instance.LevelTransform); + } } public override bool Equals(ILevelObject other) {