Simple C# script to recreate Stardew Valley working machines scaling effect.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// © 2017 TheFlyingKeyboard and released under MIT License

//Pingpongs x scale of object

public class ScaleXEffect : MonoBehaviour {
    [SerializeField] private Transform objectToScale;
    [SerializeField] private bool scaleThisObject = false;

    [SerializeField] private float scalingSpeed;
  [SerializeField] private float minXScale;
  [SerializeField] private float maxXScale;
    [SerializeField] private bool scaleObject = false;

  // Use this for initialization
  void Start () {
        if (scaleThisObject)
            objectToScale = transform;

        maxXScale -= minXScale;

    // Update is called once per frame
    void Update()
        if (scaleObject)
            objectToScale.localScale = new Vector3(minXScale + Mathf.PingPong(Time.time * scalingSpeed, maxXScale), objectToScale.localScale.y, objectToScale.localScale.z);

    public void StartScaling()
        scaleObject = true;

    public void StopScaling()
        scaleObject = false;


Unity 2D C# Stardew Valley Working Machines Effect
Tagged on:         

Leave a Reply

Your email address will not be published. Required fields are marked *

This website stores some user agent data. These data are used to provide a more personalized experience and to track your whereabouts around our website in compliance with the European General Data Protection Regulation. If you decide to opt-out of any future tracking, a cookie will be set up in your browser to remember this choice for one year. I Agree, Deny