unity3d
इनपुट सिस्टम
खोज…
पढ़ना कुंजी प्रेस और 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");
}
}