我正在制作一個系統(tǒng),您可以在其中按下某個鍵,它將在您的鼠標位置放置一個對象。每次按下“1”鍵時,它都應該將其放在鼠標位置,但由于某種原因,每一幀都Input.GetKeyDown("Alpha1");被注冊為 true,因此無論我移動鼠標,無論我按什么,它都會將塊向下放置。最近經(jīng)常發(fā)生這種情況,我似乎找不到任何答案。using UnityEngine;public class CubePlacer : MonoBehaviour{ private Grid grid; public KeyCode place; private void Awake() { grid = FindObjectOfType<Grid>(); } private void Update() { if (Input.GetKeyDown(place)) ; { RaycastHit hitInfo; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hitInfo)) { PlaceCubeNear(hitInfo.point); } } } private void PlaceCubeNear(Vector3 clickPoint) { var finalPosition = grid.GetNearestPointOnGrid(clickPoint); GameObject.CreatePrimitive(PrimitiveType.Cube).transform.position = finalPosition; //GameObject.CreatePrimitive(PrimitiveType.Sphere).transform.position = nearPoint; }}
1 回答

拉莫斯之舞
TA貢獻1820條經(jīng)驗 獲得超10個贊
if (Input.GetKeyDown(place)) ; // <--- remove this semi colon
{
RaycastHit hitInfo;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hitInfo))
{
PlaceCubeNear(hitInfo.point);
}
}
您需要刪除 If 語句后的分號。每次Update()調用該方法時,它都會終止該行并導致塊隨后執(zhí)行。
- 1 回答
- 0 關注
- 134 瀏覽
添加回答
舉報
0/150
提交
取消