私は現在、スペースボタンを押すと基本的にオブジェクトを回転させるスクリプトを持っています。もう一度押すと、オブジェクトが停止します。簡単?スピード増分と減速でオブジェクトスピンを開始
どのようにして、Spaceキーを押してスピンを0からゆっくり(たとえば)1000スピン/分までのスピードにするかなどです。そして、私が宇宙を動かすと、スピードは0に戻ります。
は、ここで私がこれまで持っているものです。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class spin : MonoBehaviour
{
public float speed = 500f;
public Button starter;
public Button stopper;
bool isSpinning = false;
IEnumerator spinnerCoroutine;
void Start()
{
spinnerCoroutine = spinCOR();
}
void Update()
{
//Start if Space-key is pressed AND is not Spinning
if (Input.GetKeyDown(KeyCode.Space) && !isSpinning)
{
FidgetSpinnerStart();
}
//Stop if Space-key is pressed AND is already Spinning
else if (Input.GetKeyDown(KeyCode.Space) && isSpinning)
{
FidgetSpinnerStop();
}
}
IEnumerator spinCOR()
{
//Spin forever until FidgetSpinnerStop is called
while (true)
{
transform.Rotate(Vector3.up, speed * Time.deltaTime);
//Wait for the next frame
yield return null;
}
}
void FidgetSpinnerStart()
{
//Spin only if it is not spinning
if (!isSpinning)
{
isSpinning = true;
StartCoroutine(spinnerCoroutine);
}
}
void FidgetSpinnerStop()
{
//Stop Spinning only if it is already spinning
if (isSpinning)
{
StopCoroutine(spinnerCoroutine);
isSpinning = false;
}
}
}
乾杯!
投稿する前にこれを行うように努力するべきだと思います。それは難しいことではありません。 'Input.GetKeyDown'を使用して、ボタンが離されたときにそれを検出する' Input.GetKeyUp'を検出します。インクリメント/デクリメントについては、コルーチンを使用してください。メソッド[here](https://stackoverflow.com/questions/45736799/decrease-variable-over-a-specific-amount-of-time/45737410#45737410)を参照してください。 – Programmer