la config des ennemis influencait la config des alliés, ce qui était un bug maintenant, il y a une config différente pour les alliés et les ennemis. l'animation d'attaque ne se terminait pas à temps pour faire le dégat, il a donc fallu multiplier la vitesse d'animation par le attack speed quand on attaque j'en ai profité pour faire la même chose pour le walk animation et le speed j'ai changé l'attribut des unités "attack speed" pour un "attack interval", pour que ça représente mieux son utilisation. Le multiplicateur reste sur la vitesse, et non sur l'interval. Les configs pour les ressources sont les valeurs des ressources directement (pas des multiplicateurs)
76 lines
2.6 KiB
C#
76 lines
2.6 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
/// <summary>
|
|
/// Manages resource production, and serves as a countdown to leave a resource on the ground
|
|
/// </summary>
|
|
public class ResourceMaker : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private Enum.ResourceChoice _resourceChoice;
|
|
private ResourceManager _resourceManagerInstance;
|
|
[SerializeField]
|
|
private Vector2 _endPosition;
|
|
private Vector2 _startPosition;
|
|
private Rigidbody2D _rigidbody;
|
|
private float _desiredTime = 1.5f;
|
|
private float _timePassed = 0f;
|
|
private bool _isPlaying = false;
|
|
|
|
public Enum.ResourceChoice ResourceChoice => _resourceChoice;
|
|
|
|
private void Start()
|
|
{
|
|
_resourceManagerInstance = ResourceManager.Instance;
|
|
_startPosition = transform.position;
|
|
transform.position = new Vector2(transform.position.x, transform.position.y + 0.5f);
|
|
_rigidbody = GetComponent<Rigidbody2D>();
|
|
_rigidbody.AddForce(transform.up * 20.0f);
|
|
_rigidbody.gravityScale = 0.1f;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Depending on the resource choice, chooses the prefab it should instantiate
|
|
/// </summary>
|
|
private void Update()
|
|
{
|
|
if (Vector2.Distance(transform.position, _startPosition) < 0.01f)
|
|
{
|
|
_rigidbody.gravityScale = 0.0f;
|
|
_rigidbody.velocity = Vector2.zero;
|
|
}
|
|
|
|
if (_isPlaying)
|
|
{
|
|
var amount = GlobalConfig.Instance.Current.harvestAmount;
|
|
_timePassed += Time.deltaTime;
|
|
float duration = _timePassed / _desiredTime;
|
|
duration = duration * duration * (3.0f - 2.0f * duration);
|
|
transform.position = Vector2.Lerp(transform.position, _endPosition, duration);
|
|
if(Vector2.Distance(transform.position,_endPosition) < 0.001f)
|
|
{
|
|
_isPlaying = false;
|
|
switch (_resourceChoice)
|
|
{
|
|
case Enum.ResourceChoice.Rock:
|
|
_resourceManagerInstance.RockAmount = amount;
|
|
break;
|
|
case Enum.ResourceChoice.Wood:
|
|
_resourceManagerInstance.WoodAmount = amount;
|
|
break;
|
|
case Enum.ResourceChoice.Food:
|
|
_resourceManagerInstance.FoodAmount = amount;
|
|
break;
|
|
}
|
|
Destroy(gameObject);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void GenerateResource()
|
|
{
|
|
_isPlaying = true;
|
|
_rigidbody.gravityScale = 0.0f;
|
|
_rigidbody.velocity = Vector2.zero;
|
|
}
|
|
}
|