void Update() { switch (_state) { case LootRewardFeedbackState.None: break; case LootRewardFeedbackState.Spawning: transform.localScale = Vector3.Lerp(transform.localScale, _beforeMovingScale, _scaleSpeed * Time.deltaTime); if (Vector3.Distance(transform.localScale, _beforeMovingScale) < _scaleReachingDistance) { _state = LootRewardFeedbackState.Moving; } break; case LootRewardFeedbackState.Moving: transform.position = Vector3.Lerp(transform.position, _targetPosition, _moveSpeed * Time.deltaTime); if (Vector3.Distance(transform.position, _targetPosition) < _moveReachingDistance) { _state = LootRewardFeedbackState.Dissapearing; _onFeedbackReachedEnd?.Invoke(_amount); } break; case LootRewardFeedbackState.Dissapearing: transform.localScale = Vector3.Lerp(transform.localScale, Vector3.zero, _scaleSpeed * Time.deltaTime); if (Vector3.Distance(transform.localScale, Vector3.zero) < _scaleReachingDistance) { _state = LootRewardFeedbackState.None; OnFeedbackEnded(); } break; } }
public void Init(LootRewardFeedbackData data) { transform.position = data.StartTransform != null ? data.StartTransform.position : Vector3.zero; transform.localScale = _initialScale; _targetPosition = data.TargetPosition; _onFeedbackStarts = data.OnFeedbackStarts; _onFeedbackStarts?.Invoke(); _onFeedbackReachedEnd = data.OnFeedbackReachedEnd; _amount = data.Amount; InitParticle(_amount > 1); _state = LootRewardFeedbackState.Spawning; }
public void OnFeedbackEnded() { //Debug.Log("LootRewardFeedback ended! Target: " + _targetTransform.name); _state = LootRewardFeedbackState.None; Destroy(gameObject); }