Skip to content

Instantly share code, notes, and snippets.

@blue0513
Created January 13, 2018 15:53
Show Gist options
  • Save blue0513/e43456aa23a8b61ea5f7e10c64a40c47 to your computer and use it in GitHub Desktop.
Save blue0513/e43456aa23a8b61ea5f7e10c64a40c47 to your computer and use it in GitHub Desktop.
Set GameObject Property (Pos, Rot, Size) with Lerp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// Set Object Property (Pos, Rot, Size) with Lerp
public class ObjectPropertyDirector : MonoBehaviour {
private Vector3 modifyAngles (Vector3 rot) {
rot.x = modifyAngle (rot.x);
rot.y = modifyAngle (rot.y);
rot.z = modifyAngle (rot.z);
return rot;
}
// convert angle from (-360 to 360) to (-180 to 180)
private float modifyAngle (float _deltaAngle) {
float deltaAngle = _deltaAngle;
if (Mathf.Abs (_deltaAngle) > 180f) {
if (_deltaAngle > 0f) {
deltaAngle = _deltaAngle - 360f;
} else {
deltaAngle = _deltaAngle + 360f;
}
}
return deltaAngle;
}
private IEnumerator _setObjectProperty (GameObject obj, Vector3 endSize, Vector3 endPos, Vector3 endRot, float span) {
float timer = 0f;
Vector3 startSize = obj.transform.localScale;
Vector3 startPos = obj.transform.position;
Vector3 startRot = obj.transform.eulerAngles;
startRot = modifyAngles (startRot);
while (timer < span) {
timer += Time.deltaTime;
Vector3 size = Vector3.Lerp (startSize, endSize, timer / span);
Vector3 pos = Vector3.Lerp (startPos, endPos, timer / span);
Vector3 rot = Vector3.Lerp (startRot, endRot, timer / span);
obj.transform.localScale = size;
obj.transform.position = pos;
obj.transform.eulerAngles = rot;
yield return null;
}
obj.transform.localScale = endSize;
obj.transform.position = endPos;
obj.transform.eulerAngles = endRot;
yield return null;
}
// set "obj" to specific "endSize" or "endPos" or "endRot"
public void setObjectProperty (GameObject obj, Vector3 endSize, Vector3 endPos, Vector3 endRot, float span) {
StartCoroutine (_moveObject (obj, endSize, endPos, endRot, span));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment