參考文章:http://www.cnblogs.com/SkyD/archive/2008/09/05/1284778.html
主要依據胡克公式F=-k·x。這里k是倔度系數,可以理解為k值越大彈性越強。
實際運用不能照搬胡克公式,可以作為速率使用,具體看參考文章。
k值較低的效果:
k值較高的效果:
腳本:
using UnityEngine; using System.Collections; public class Spring : MonoBehaviour { public float k = 50f; public float fric = 24f; public float force = 1f; Vector3 mVelocity; Vector3 mOriginPosition; void Awake() { mOriginPosition = transform.position; } void Update() { var f = (mOriginPosition - transform.position) * k; mVelocity += f * Time.deltaTime; mVelocity = Vector3.Lerp(mVelocity, Vector3.zero, fric * Time.deltaTime); transform.position += mVelocity; } void OnTriggerEnter(Collider other) { mVelocity = (other.transform.position - transform.position).normalized * force; } }