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
// theflyingkeyboard.net

//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 *