サーチ…


GetKeyとGetKeyDownとGetKeyUpの違い

入力は、更新機能から読み取る必要があります。

利用可能なすべてのKeycode enumの参照。

1. Input.GetKeyキープレスをInput.GetKey

Input.GetKeyは、ユーザーが指定されたキーを押している間、 繰り返し trueを返します。これは指定されたキーを押したまま武器を繰り返し発射するのに使用できます。以下はSpaceキーを押したときの弾丸の自動発射の例です。プレイヤーはキーを何度も何度も押して離す必要はありません。

public GameObject bulletPrefab;
public float shootForce = 50f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        Debug.Log("Shooting a bullet while SpaceBar is held down");

        //Instantiate bullet
        GameObject bullet = Instantiate(bulletPrefab, transform.position, transform.rotation) as GameObject;

        //Get the Rigidbody from the bullet then add a force to the bullet
        bullet.GetComponent<Rigidbody>().AddForce(bullet.transform.forward * shootForce);
    }
}

2でキーを押して.Reading Input.GetKeyDown

Input.GetKeyDownは、指定されたキーが押されときに1回だけtrueになります。これは、 Input.GetKeyInput.GetKeyDown主な違いInput.GetKeyDown 。その使用の1つの使用例は、UIまたは懐中電灯またはアイテムのオン/オフを切り替えることである。

public Light flashLight;
bool enableFlashLight = false;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        //Toggle Light 
        enableFlashLight = !enableFlashLight;
        if (enableFlashLight)
        {
            flashLight.enabled = true;
            Debug.Log("Light Enabled!");
        }
        else
        {
            flashLight.enabled = false;
            Debug.Log("Light Disabled!");
        }
    }
}

3でキーを押して.Reading Input.GetKeyUp

これはInput.GetKeyDownInput.GetKeyDownです。キー押下が解除/解除されたときを検出するために使用されます。 Input.GetKeyDownと同様に、 true 1 だけ返しtrue 。たとえば、 Input.GetKeyDownキーがInput.GetKeyDownれているときenableライトをenableし、 Input.GetKeyDownキーをInput.GetKeyUpときにライトを無効にすることがenableます。

public Light flashLight;
void Update()
{
    //Disable Light when Space Key is pressed
    if (Input.GetKeyDown(KeyCode.Space))
    {
        flashLight.enabled = true;
        Debug.Log("Light Enabled!");
    }

    //Disable Light when Space Key is released
    if (Input.GetKeyUp(KeyCode.Space))
    {
        flashLight.enabled = false;
        Debug.Log("Light Disabled!");
    }
}

加速度センサーの読み取り(基本)

Input.accelerationは、加速度センサーを読み取るために使用されます。これは、3D空間にxyz軸値を含む結果としてVector3を返します。

void Update()
{
    Vector3 acclerometerValue = rawAccelValue();
    Debug.Log("X: " + acclerometerValue.x + "  Y: " + acclerometerValue.y + "  Z: " + acclerometerValue.z);
}

Vector3 rawAccelValue()
{
    return Input.acceleration;
}

加速度センサの読み取り(Advance)

加速度センサから生の値を直接使用してGameObjectを移動または回転させると、動きや振動などが発生する可能性があります。値を平滑化してから使用することをお勧めします。実際には、加速度センサからの値は、使用する前に常に平滑化する必要があります。これは、ローパスフィルタで実現できます。これは、 Vector3.Lerpが配置されている場所です。

//The lower this value, the less smooth the value is and faster Accel is updated. 30 seems fine for this
const float updateSpeed = 30.0f;

float AccelerometerUpdateInterval = 1.0f / updateSpeed;
float LowPassKernelWidthInSeconds = 1.0f;
float LowPassFilterFactor = 0;
Vector3 lowPassValue = Vector3.zero;

void Start()
{
    //Filter Accelerometer
    LowPassFilterFactor = AccelerometerUpdateInterval / LowPassKernelWidthInSeconds;
    lowPassValue = Input.acceleration;
}

void Update()
{

    //Get Raw Accelerometer values (pass in false to get raw Accelerometer values)
    Vector3 rawAccelValue = filterAccelValue(false);
    Debug.Log("RAW X: " + rawAccelValue.x + "  Y: " + rawAccelValue.y + "  Z: " + rawAccelValue.z);

    //Get smoothed Accelerometer values (pass in true to get Filtered Accelerometer values)
    Vector3 filteredAccelValue = filterAccelValue(true);
    Debug.Log("FILTERED X: " + filteredAccelValue.x + "  Y: " + filteredAccelValue.y + "  Z: " + filteredAccelValue.z);
}

//Filter Accelerometer
Vector3 filterAccelValue(bool smooth)
{
    if (smooth)
        lowPassValue = Vector3.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor);
    else
        lowPassValue = Input.acceleration;

    return lowPassValue;
}

加速度センサの読み取り(高精度)

加速度センサーを正確に読み取ります。

この例では、メモリを割り当てます。

void Update()
{
    //Get Precise Accelerometer values 
    Vector3 accelValue = preciseAccelValue();
    Debug.Log("PRECISE X: " + accelValue.x + "  Y: " + accelValue.y + "  Z: " + accelValue.z);

}

Vector3 preciseAccelValue()
{
    Vector3 accelResult = Vector3.zero;
    foreach (AccelerationEvent tempAccelEvent in Input.accelerationEvents)
    {
        accelResult = accelResult + (tempAccelEvent.acceleration * tempAccelEvent.deltaTime);
    }
    return accelResult;
}

この例ではメモリを割り当てませ

void Update()
{
    //Get Precise Accelerometer values 
    Vector3 accelValue = preciseAccelValue();
    Debug.Log("PRECISE X: " + accelValue.x + "  Y: " + accelValue.y + "  Z: " + accelValue.z);

}

Vector3 preciseAccelValue()
{
    Vector3 accelResult = Vector3.zero;
    for (int i = 0; i < Input.accelerationEventCount; ++i)
    {
        AccelerationEvent tempAccelEvent = Input.GetAccelerationEvent(i);
        accelResult = accelResult + (tempAccelEvent.acceleration * tempAccelEvent.deltaTime);
    }
    return accelResult;
}

これはフィルタリングされないことに注意してください。 ここで 、ノイズを除去するために加速度計の値を平滑化する方法を見ください。

マウスボタンの読み込み(左、中、右)クリック

これらの機能は、マウスボタンクリックのチェックに使用されます。

  • Input.GetMouseButton(int button);
  • Input.GetMouseButtonDown(int button);
  • Input.GetMouseButtonUp(int button);

それらはすべて同じパラメータを取る。

  • 0 =左マウスクリック。
  • 1 =右マウスクリック。
  • 2 =中マウスクリック。

GetMouseButtonは、マウスボタンが継続して押されたことを検出するために使用れます。指定されたマウスボタンが押されている間はtrueを返しtrue

void Update()
{
    if (Input.GetMouseButton(0))
    {
        Debug.Log("Left Mouse Button Down");
    }

    if (Input.GetMouseButton(1))
    {
        Debug.Log("Right Mouse Button Down");
    }

    if (Input.GetMouseButton(2))
    {
        Debug.Log("Middle Mouse Button Down");
    }
}

GetMouseButtonDownは、マウスクリックがあるときを検出するために使用されます。 一度押すとtrue返しtrue 。マウスボタンが離されて再び押されるまで、再びtrue戻りません。

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Debug.Log("Left Mouse Button Clicked");
    }

    if (Input.GetMouseButtonDown(1))
    {
        Debug.Log("Right Mouse Button Clicked");
    }

    if (Input.GetMouseButtonDown(2))
    {
        Debug.Log("Middle Mouse Button Clicked");
    }
}

GetMouseButtonUpは、指定されたマウスボタンがいつGetMouseButtonUpされるかを検出するために使用されます。これは、指定されたマウスボタンが離されるとtrue返しtrue 。もう一度真を返すには、それを再び押さなければならない。

void Update()
{
    if (Input.GetMouseButtonUp(0))
    {
        Debug.Log("Left Mouse Button Released");
    }

    if (Input.GetMouseButtonUp(1))
    {
        Debug.Log("Right Mouse Button Released");
    }

    if (Input.GetMouseButtonUp(2))
    {
        Debug.Log("Middle Mouse Button Released");
    }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow