一般在游戏中都会需要有物品掉落的表现,今天就编写了一个通用的模拟原地抛物线的脚本,适用于物品在怪物身上掉落时的表现。
using UnityEngine;
using System.Collections;
public class Drop : MonoBehaviour
{
public GameObject go;
private float _a = 0.0f;
private float _b = 0.0f;
public float jumpDuration = 3f; //弹起的时间
public float height = 50; //弹起的高度
private float _curTime = 0.0f;
public int count = 3; //弹起的次数
private Vector3 _homePos = Vector3.zero;
private Vector3 _tempPos = Vector3.zero;
void Start()
{
_homePos = go.transform.position;
CalculateAAndB();
}
private void CalculateAAndB()
{
_a = -4 * height / Mathf.Pow(jumpDuration, 2);
_b = _a * (-1) * jumpDuration;
}
// Update is called once per frame
void Update()
{
if (gameObject)
{
if (_curTime < jumpDuration)
{
_curTime += Time.deltaTime;
_tempPos = _homePos + (_a * Mathf.Pow(_curTime, 2) + _b * _curTime) * Vector3.up;
go.transform.position = _tempPos;
}
else if (count > 0)
{
count = count - 1;
_curTime = 0;
height = 0.5f * height;
jumpDuration = 0.5f * jumpDuration;
CalculateAAndB();
}
}
}
}