// Update is called once per frame void OnInteractorStay(Interactor interactor) { if (MaxLevel || DisableShop) { return; } if (_currentInteractor == interactor) { if (!interactor.TryingToBuild()) { interactionTime = 0; CancelRadishes(); return; } RaddishCarrier carrier = interactor.GetComponentInParent <RaddishCarrier>(); Debug.Assert(carrier != null, "Need raddishcarrier in interactor parents"); interactionTime += Time.fixedDeltaTime; if (interactionTime >= TimeToAddRaddish) { Raddish raddish = carrier.RemoveForNewTarget(RaddishTargets[RaddishesWaitingAtTarget.Count]); if (raddish != null) { RaddishesWaitingAtTarget.Add(raddish); interactionTime = 0; } if (EnoughRadishesToLevel()) { foreach (Raddish r in RaddishesWaitingAtTarget) { r.AnimateOutAndHide(); } RaddishesUsed.AddRange(RaddishesWaitingAtTarget); RaddishesWaitingAtTarget.Clear(); if (CurrentLevel < LevelRequirements.Count - 1) { CurrentLevel += 1; OnLevelUp?.Invoke(CurrentLevel); } else { MaxLevel = true; } SetRaddishTargetsForNewLevel(); } } } }
void FixedUpdate() { if (_seekTarget == null) { return; } // _rigidbody.positions _seekTime += Time.deltaTime; Vector3 lerpPos = Vector3.Lerp(_rigidbody.transform.position, _seekTarget.transform.position, _seekTime); _rigidbody.MovePosition(lerpPos); _rigidbody.velocity = Vector3.zero; if (Vector3.Distance(_seekTarget.position, _rigidbody.position) < 2) { RaddishCarrier carrier = _seekTarget.GetComponentInParent <RaddishCarrier>(); carrier.StoreRaddish(this); } }
private void Awake() { intearactorEvent = GetComponent <InteractorEvent>(); _carrier = GetComponent <RaddishCarrier>(); }