수색…


키 누르기 및 GetKey, GetKeyDown 및 GetKeyUp 간의 차이점 읽기

입력은 반드시 Update 함수에서 읽어야합니다.

사용 가능한 모든 키 코드 enum에 대한 참조.

1. Input.GetKey 키 누르기 읽기 :

Input.GetKey 는 사용자가 지정된 키를 누른 상태에서 반복적 으로 true 를 반환 true . 이것은 지정된 키를 누른 상태에서 반복적 으로 무기를 발사하는 데 사용할 수 있습니다. 다음은 스페이스 키를 누르고있는 경우의 총알 자동 발사의 예입니다. 플레이어는 키를 반복해서 눌렀다가 놓을 필요가 없습니다.

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. Input.GetKeyDown으로 키 누르기를 Input.GetKeyDown .

Input.GetKeyDown 은 지정된 키를 누를 때 한 번만 true가됩니다. 이것이 Input.GetKeyInput.GetKeyDown 의 주요 차이점입니다. 한 가지 사용 예는 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.GetKeyDown 정반대입니다. 키 누름이 해제 / 해제 될 때이를 감지하는 데 사용됩니다. Input.GetKeyDown 과 마찬가지로 true 한 번만 반환 true . 예를 들어, 당신은 할 수 enable 키를 함께 누르고 빛 Input.GetKeyDown 키와 해제 될 때 그 빛을 해제 Input.GetKeyUp .

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 공간에서 x , yz 축 값을 포함하는 결과로 Vector3 을 반환합니다.

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

Vector3 rawAccelValue()
{
    return Input.acceleration;
}

가속도계 센서 읽기 (고급)

가속도계 센서에서 직접 원시 값을 사용하여 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 은 지정된 마우스 단추가 해제 된시기를 감지하는 데 사용됩니다. 지정된 마우스 버튼을 놓으면 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