खोज…


पढ़ना कुंजी प्रेस और GetKey, GetKeyDown और GetKeyUp के बीच अंतर

इनपुट को अपडेट फ़ंक्शन से पढ़ना चाहिए।

सभी उपलब्ध Keycode enum का संदर्भ।

1. Input.GetKey साथ कुंजी प्रेस पढ़ना:

उपयोगकर्ता द्वारा निर्दिष्ट कुंजी को रखने के दौरान Input.GetKey बार-बार 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 केवल एक बार सत्य होगा जब निर्दिष्ट कुंजी दबाया जाएगा। यह Input.GetKey और Input.GetKeyDown बीच महत्वपूर्ण अंतर है। इसके उपयोग का एक उदाहरण यूआई या टॉर्च को चालू या बंद / बंद करना है।

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। Input.GetKeyUp साथ प्रमुख कुंजी दबाएं। Input.GetKeyUp :

यह Input.GetKeyDown बिल्कुल विपरीत है। यह पता लगाने के लिए प्रयोग किया जाता है कि की-प्रेस कब जारी / उठाई जाती है। Input.GetKeyDown तरह, यह केवल एक बार ही 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 का उपयोग किया जाता है। यह Vector3 को एक परिणाम के रूप में देता है जिसमें 3 डी अंतरिक्ष में x , y और z अक्ष मान होते हैं।

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

Vector3 rawAccelValue()
{
    return Input.acceleration;
}

एक्सेलेरोमीटर सेंसर (एडवांस) पढ़ें

गेमऑब्जेक्ट को स्थानांतरित करने या घुमाने के लिए एक्सेलेरोमीटर सेंसर से सीधे कच्चे मूल्यों का उपयोग करने से झटकेदार आंदोलनों या कंपन जैसी समस्याएं हो सकती हैं। उन्हें उपयोग करने से पहले मूल्यों को सुचारू करने की सिफारिश की जाती है। वास्तव में, एक्सेलेरोमीटर सेंसर से मूल्यों को उपयोग से पहले हमेशा सुचारू किया जाना चाहिए। यह एक कम पास फिल्टर के साथ पूरा किया जा सकता है और यह वह जगह है जहां 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 जब निर्दिष्ट माउस बटन को नीचे रखा जा रहा है।

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 नहीं होगा जब तक कि माउस बटन जारी नहीं किया जाता है और फिर से दबाया जाता है।

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 लिए किया जाता है जब GetMouseButtonUp माउस बटन जारी किया जाता है। यह केवल वापस आ जाएगी है 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