我在玩家總是彈跳上下的遊戲中創建可以在不同高度的不同地面上玩的遊戲。 我創造了這個代碼彈跳:彈跳(通過代碼而不是物理材質)並改變高度
transform.position = new Vector3(Mathf.Lerp(transform.position.x, Towards.x, Time.deltaTime * 5), minY + Mathf.Abs(Mathf.Sin(Time.time * 3) * maxY) , transform.position.z);
與「美星」我CONTROLL在彈跳高度的量。我改變美星時,球在地面上,因此將有一個平穩的運動
if (Mathf.Abs(Mathf.Sin(Time.time * 3)) < 0.02f && grounded)
{
grounded = false;
maxZ = 2.5f * maxY;
}
else if (Mathf.Abs(Mathf.Sin(Time.time * 3)) > 0.02f)
{
grounded = true;
}
我的問題是,當球進入到一個更高或更低的地面。
我檢測地面HIGHT與此代碼:
RaycastHit hit;
if (Physics.Raycast(transform.position, -transform.up, out hit, 40, mask))
{
minY = GetComponent<SphereCollider>().radius + hit.point.y;
}
,然後它會在下次更新被添加到MINY。但問題在於,當minY發生變化時,玩家會突然改變其在空中的位置。
我需要一個代碼來使這個高度變化平滑,但不能提出任何想法。
(MINY,持有人,Time.deltaTime * 2),但它仍然從一個跳躍身高突然到另一個 –
等一下,'minY'是什麼?一個變量?一個東西? –
minY是gameObject可以達到的最小高度。因爲「Mathf.Sin(Time.time * 3)」介於[0,1]之間,所以我將它添加到高度,以便最小高度可以更高。 –