Tôi rất mới đối với C#. Tôi đang tạo ra một thứ gì đó trong Unity để giúp tôi học C# và Unity tốt hơn.C# và Unity3D khi phím đang được nhấn
Tôi muốn biết lý do tại sao:
Input.GetKeyDown(KeyCode.UpArrow))
Chỉ bắn một lần khi được đặt bên trong:
void Update()
Kể từ khi cập nhật là một vòng lặp, tại sao nó không bị sa thải trong khi tôi giữ phím xuống (trong trường hợp của tôi gây ra một quả cầu để di chuyển)?
Tôi đã quản lý để làm cho nó hoạt động bằng cách sử dụng hai bools được thay đổi khi phím được nhấn và nhả.
Đây là kịch bản đầy đủ của tôi mà tôi đang chơi với để di chuyển một quả cầu và mô phỏng khả năng tăng tốc/giảm tốc:
using UnityEngine;
using System.Collections;
public class sphereDriver : MonoBehaviour {
int x ;
bool upPressed = false ;
bool downPressed = false ;
void Start()
{
x = 0 ;
}
void Update()
{
if(x > 0) {
x -= 1 ;
}
if(x < 0) {
x += 1 ;
}
if(Input.GetKeyDown(KeyCode.UpArrow))
{
upPressed = true ;
}
else if(Input.GetKeyUp(KeyCode.UpArrow))
{
upPressed = false ;
}
if(upPressed == true)
{
x += 5 ;
}
if(Input.GetKeyDown(KeyCode.DownArrow))
{
downPressed = true ;
}
else if(Input.GetKeyUp(KeyCode.DownArrow))
{
downPressed = false ;
}
if(downPressed == true)
{
x -= 5 ;
}
transform.Translate(x * Time.deltaTime/10, 0, 0) ;
}
}
Cảm ơn! Vì hai chức năng đó là Unity cụ thể, liệu cách tôi đã làm nó ban đầu có phải là những gì hầu hết sẽ làm để đạt được những gì tôi muốn chỉ trong C#? – imperium2335
Vâng, đây sẽ là một cách phổ biến để làm điều đó. – redtuna