/// <summary> /// When we lose a body part, we play a feedback, destroy the last part, lose points, and update our points display /// </summary> /// <param name="part"></param> public virtual void Lose(SnakeBodyPart part) { if (Time.time - _lastLostPart < MinTimeBetweenLostParts) { return; } _lastLostPart = Time.time; LoseFeedback?.PlayFeedbacks(part.transform.position); Destroy(_snakeBodyParts[_snakeBodyParts.Count - 1].gameObject); _snakeBodyParts.RemoveAt(_snakeBodyParts.Count - 1); SnakePoints--; PointsCounter.text = SnakePoints.ToString(); }
/// <summary> /// When eating food, we instantiate a new body part unless we've reached our limit /// </summary> public virtual void EatEffect() { _lastFoodEatenAt = Time.time; if (SnakePoints < MaxAmountOfBodyParts - 1) { SnakeBodyPart part = Instantiate(BodyPartPrefab); part.transform.position = this.transform.position; part.TargetRecorder = _recorder; part.Offset = ((SnakePoints) * BodyPartsOffset) + BodyPartsOffset + 1; part.Index = _snakeBodyParts.Count; part.name = "SnakeBodyPart_" + part.Index; _snakeBodyParts.Add(part); } }