using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spin : MonoBehaviour
{
public float speed;
public float RotationSpeed = 1;
public float RotationAcceleration = 1;
private float currentRotationSpeed;
// Start is called before the first frame update
void Start()
{
currentRotationSpeed = RotationSpeed;
}
// Update is called once per frame
void Update()
{
transform.Rotate(0, 0, speed * Time.fixedDeltaTime, Space.Self);
if (Input.GetKeyDown("w") || Input.GetKeyDown("s"))
{
currentRotationSpeed = RotationSpeed;
}
if (Input.GetKey("w"))
{
transform.Rotate(0, 0, currentRotationSpeed, Space.Self);
currentRotationSpeed = Time.fixedDeltaTime * RotationAcceleration;
}
if (Input.GetKey("s"))
{
transform.RotateAround(transform.position, transform.up, currentRotationSpeed);
currentRotationSpeed = Time.fixedDeltaTime * RotationAcceleration;
}
}
}
我試圖洗掉這條線:這條線只是為了測驗自動旋轉。
transform.Rotate(0, 0, speed * Time.fixedDeltaTime, Space.Self);
在任何情況下,當我在不離開鍵的情況下按下 w 鍵時,它正在旋轉并且速度正在增加,但在某些時候速度會減慢,然后在停止之前它會改變旋轉方向并再次開始增加旋轉速度。
我希望當按下 w 鍵時增加加速不間斷然后當按下 s 鍵時降低從當前點的速度旋轉慢慢下降到停止。
然后當按下 w 時,它將再次開始增加速度并減速以停止平穩。
uj5u.com熱心網友回復:
隨著速度的增加,您最終會達到每幀應用超過 180 度旋轉的點,此時,速度每增加一次,物件就會出現減速。當您達到每幀 360 度的旋轉時,它會顯得靜止,然后星形會再次緩慢增加。
您所體驗到的原理與在閃爍的燈光(例如熒光燈管)中觀看紡車時的頻閃效應非常相似。
您需要做的是確保速度永遠不會達到您將物件每幀旋轉超過 180 度的點。
換句話說,您需要添加一些代碼來檢查 if(speed * Time.fixedDeltaTime < 180) 以及是否要相應地減少它。實際上,即使這樣可能還不夠,您可能希望將步長限制為 45 度以保持旋轉的外觀。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504926.html
下一篇:如何在C#.net中對齊輸出文本