ฉันกำลังเรียนรู้ Unity แต่ไม่พบการกดแป้นของฉัน
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public Rigidbody myBody;
private float time = 0.0f;
private bool isMoving = false;
private bool isJumpPressed = false;
void Start(){
myBody = GetComponent<Rigidbody>();
}
void Update()
{
isJumpPressed = Input.GetKeyDown(KeyCode.Space);
Debug.Log(isJumpPressed);
}
void FixedUpdate(){
if(isJumpPressed){
myBody.velocity = new Vector3(0,10,0);
isMoving = true;
Debug.Log("jump");
}
if(isMoving){
time = time + Time.fixedDeltaTime;
if(time>10.0f)
{
//Debug.Log( Debug.Log(gameObject.transform.position.y + " : " + time));
time = 0.0f;
}
}
}
}
ทำไม JumpPressed เป็นเท็จเสมอ ผมทำอะไรผิดหรือเปล่า? จากสิ่งที่ฉันเข้าใจสิ่งนี้น่าจะใช้ได้ แต่เห็นได้ชัดว่าฉันพลาดบางอย่าง
UPDATE: ขอบคุณทุกคนที่เสนอไอเดีย ฉันได้รับ isJumpPressed เพื่อส่งคืนจริงเมื่อฉันหยุดพยายามตรวจจับแถบพื้นที่
isJumpPressed = Input.GetKeyDown("a");
ใครมีความคิดว่าทำไมถึงใช้งานได้และไม่ได้ผล
isJumpPressed = Input.GetKeyDown(KeyCode.Space);
หรือ
isJumpPressed = Input.GetKeyDown("space");
อัปเดต 2: เห็นได้ชัดว่านี่เป็นข้อผิดพลาดใน Linux ฉันอ่านแล้วมันจะไม่เกิดขึ้นเมื่อเกมสร้างขึ้นในตัวแก้ไข ฉันพบวิธีแก้ปัญหาที่https://forum.unity.com/threads/space-not-working.946974/?_ga=2.25366461.1247665695.1598713842-86850982.1598713842#post-6188199
หาก Googler พบปัญหานี้ให้อ้างอิงรหัสต่อไปนี้เนื่องจากสิ่งนี้ใช้ได้ผลสำหรับฉัน
public class Player : MonoBehaviour
{
public Rigidbody myBody;
private float time = 0.0f;
private bool isMoving = false;
private bool isJumpPressed = false;
void Start(){
myBody = GetComponent<Rigidbody>();
}
void Update()
{
isJumpPressed = Input.GetKeyDown(SpacebarKey());
if(isJumpPressed)
{
Debug.Log(isJumpPressed);
}
}
void FixedUpdate(){
if(isJumpPressed){
myBody.velocity = new Vector3(0,10,0);
isMoving = true;
Debug.Log("jump");
}
if(isMoving){
time = time + Time.fixedDeltaTime;
if(time>10.0f)
{
//Debug.Log( Debug.Log(gameObject.transform.position.y + " : " + time));
time = 0.0f;
}
}
}
public static KeyCode SpacebarKey() {
if (Application.isEditor) return KeyCode.O;
else return KeyCode.Space;
}
}
ปัญหาคือFixedUpdate
และUpdate
จะไม่เรียกว่าหนึ่งหลังจากที่อื่น ๆ การอัปเดตเรียกว่าหนึ่งครั้งต่อเฟรมและ FixedUpdate ถูกเรียกหนึ่งครั้งต่อการอัปเดตฟิสิกส์ (ค่าเริ่มต้นคือ 50 การอัปเดตต่อวินาที)
ดังนั้นสิ่งต่อไปนี้อาจเกิดขึ้น:
Update is called -> GetKeyDown is true (this frame only) -> isJumpPressed = true
Update is called -> GetKeyDown is false -> isJumpPressed = false
FixedUpdate is called -> isJumpPressed is false
นี่คือตัวอย่างที่พิมพ์ "Update Jump" ทุกครั้งที่คุณกดเว้นวรรคและ "FixedUpdate Jump" เฉพาะบางครั้งเมื่อคุณกดเว้นวรรค อย่าทำอย่างนี้:
bool isJumpPressed;
void Update()
{
isJumpPressed = Input.GetKeyDown(KeyCode.Space);
if (isJumpPressed)
{
Debug.Log("Update Jump");
}
}
private void FixedUpdate()
{
if (isJumpPressed)
{
Debug.Log("FixedUpdate Jump");
}
}
ทำสิ่งนี้แทน:
bool isJumpPressed;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
isJumpPressed = true;
Debug.Log("Update Jump");
}
}
private void FixedUpdate()
{
if (isJumpPressed)
{
Debug.Log("FixedUpdate Jump");
isJumpPressed = false;
}
}
ปัญหาหนึ่งที่เป็นไปได้คือโครงการของคุณอาจใช้แพ็คเกจระบบป้อนข้อมูลใหม่ หากคุณใช้แพ็คเกจนี้ฟังก์ชันตัวจัดการอินพุตแบบเก่าจะไม่ทำงาน ในการตรวจสอบสิ่งนี้ให้ไปที่Edit > Project Settings... > Player > Other Settings
และActive Input Handling
ควรตั้งค่าเป็นInput Manager (Old)
(หรือBoth
อาจใช้งานได้เช่นกัน)
หากคุณต้องการใช้แพ็คเกจระบบอินพุตจริงๆคุณต้องติดตั้งหากคุณยังไม่มีและคุณจะตรวจสอบว่ามีการกด Spacebar หรือไม่:
using UnityEngine.InputSystem;
...
jumpPressed = Keyboard.current.space.wasPressedThisFrame;
ตรวจสอบเอกสารที่นี่: https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html
ส่งกลับค่าจริงระหว่างเฟรมที่ผู้ใช้เริ่มกดคีย์ที่ระบุโดยชื่อ
คุณต้องเรียกใช้ฟังก์ชันนี้จากฟังก์ชันอัปเดตเนื่องจากสถานะจะรีเซ็ตแต่ละเฟรม มันจะไม่กลับมาเป็นจริงจนกว่าผู้ใช้จะปล่อยคีย์และกดอีกครั้ง
ใช้GetKey
ฟังก์ชันแทน:https://docs.unity3d.com/ScriptReference/Input.GetKey.html
ส่งคืนจริงในขณะที่ผู้ใช้กดคีย์ที่ระบุโดยชื่อ
Jana Duggar เปิดใจเกี่ยวกับการค้นหาความรักของเธอ นี่คือทุกสิ่งที่เธอพูดเกี่ยวกับหัวข้อและกรอบเวลา 5 ปีสำหรับการแต่งงาน
เมื่อเร็ว ๆ นี้ แซม ฮิวแฮน นักแสดงจากเรื่อง 'Outlander' ได้เปิดเผยสิ่งที่เขาจะทำจากกองถ่ายเพื่อระลึกถึงเจมี เฟรเซอร์ บทบาทที่ทำให้เขากลายเป็นดารา
'She Loves You' เขียนขึ้นในหนึ่งชั่วโมง บันทึกเสียงในหนึ่งวัน และเป็นเพลงของ The Beatles ที่มีการแสดงที่ดีที่สุดเพลงหนึ่งในอาชีพของพวกเขา
Dolly Parton และคุณย่า Bessie มีความสัมพันธ์พิเศษ คุณยายพาร์ตันป่วยหนัก แต่นั่นไม่ได้ทำให้ดอลลี่หยุดแกล้งเธอ
มาพูดถึงงูที่เคลื่อนไหวได้เก่งกาจที่สุดในโลกทะเลทรายกันดีกว่า งูไซด์ไวเดอร์เป็นงูที่เลื้อยไปตามผืนทรายร้อนจัดในทะเลทรายที่ร้อนที่สุดในโลก งูชนิดนี้มีจุดเด่นตรงที่เลื้อยไปตามผืนทรายร้อนจัดในทะเลทราย
เมื่อพูดคุยถึงเรื่องสภาพอากาศ ความชื้นเป็นหัวข้อสนทนาและความกังวลที่เกิดขึ้นอยู่เสมอ โดยเฉพาะอย่างยิ่งในช่วงฤดูร้อนที่มีอากาศอบอ้าว เมื่อผู้คนพูดว่า "อย่างน้อยก็ยังมีอากาศร้อนแห้ง" นั่นเป็นเพียงอีกวิธีหนึ่งในการบอกว่า "โอ้ อย่างน้อยก็ไม่ชื้น!"
ผู้คนมักเรียกอเมริกาว่าเป็น "หม้อที่หลอมละลาย" เนื่องจากประชากรอเมริกันประกอบด้วยกลุ่มต่างๆ มากมาย โดยแต่ละกลุ่มก็มีประวัติศาสตร์ ประเพณี และประเพณีเป็นของตัวเอง สิ่งนี้ทำให้สหรัฐอเมริกาเป็นหนึ่งในประเทศที่มีความหลากหลายทางวัฒนธรรมมากที่สุดในโลก โดยความหลากหลายนี้สะท้อนให้เห็นในทุกแง่มุมของวัฒนธรรมอเมริกัน
หลังคาบ้านไม่ได้เป็นเพียงเกราะป้องกันเท่านั้น เป็นองค์ประกอบที่กำหนดซึ่งก่อให้เกิดความสวยงามโดยรวม การทำงาน และประสิทธิภาพการใช้พลังงานของโครงสร้าง
“เด็ก” โผล่รับเชิญดาราดังพร้อมข่าวร้าย
RAV4 นี้อ้างว่าอยู่ในสภาพที่ดีเยี่ยมและมีไว้สำหรับการเล่นเก้าอี้ดนตรี
ภาพจากโดรนจับภาพนักดับเพลิงที่กำลังพยายามดับไฟ
Eyes of Wakanda เชื่อมโยงโดยตรงกับ MCU พร้อมอัปเดตเกี่ยวกับ X-Men '97, What If..., Daredevil และอีกมากมาย
Ava Gardner แต่งงานกับ Mickey Rooney และ Frank Sintra และเธอยังคบหาดูใจกับดาราฮอลลีวูดอีกหลายคน ต่อไปนี้คือประวัติการออกเดทของ Ava Gardner
จอห์น คลีส แต่งงานกับเจนนิเฟอร์ เวด ภรรยาของเขาในปี 2012 นี่คือทุกสิ่งที่คุณต้องรู้เกี่ยวกับเจนนิเฟอร์ เวด ภรรยาของจอห์น คลีส
Michael C. Hall แต่งงานกับ Morgan Macgregor ภรรยาของเขาตั้งแต่ปี 2016 นี่คือทุกสิ่งที่คุณต้องการทราบเกี่ยวกับภรรยาของ Michael C. Hall
Mena Suvari แต่งงานกับ Michael Hope สามีของเธอมาตั้งแต่ปี 2018 นี่คือทุกสิ่งที่ควรรู้เกี่ยวกับสามีของ Mena Suvari
มันทำให้ฉันประหลาดใจ ทันใดนั้นมันก็เกิดขึ้นบ่อยๆ มันอยู่กลางทางอีกครั้ง <ไม่ ไม่ใช่คนในมหาสมุทรแปซิฟิก คุณเป็นสีน้ำตาลแดง คนที่งานคาร์นิวัล> ทุกพาดหัวข่าวดัง…..
ในปี 2022 ด้วยการเปิดตัว GPT-3 ทักษะการเขียนดูเหมือนจะมีความสำคัญน้อยลง ด้วย AI คนที่เขียนไม่ดีก็สามารถสร้างพนักงานที่มีคุณภาพได้เช่นกัน
ในโลกที่เปลี่ยนแปลงอย่างรวดเร็วและการแข่งขันในปัจจุบัน อาชีพของคนๆ หนึ่งมีบทบาทสำคัญในการเติบโตส่วนบุคคล ความมั่นคงทางการเงิน และความพึงพอใจในชีวิตโดยรวม อย่างไรก็ตาม ผู้คนจำนวนมากพบว่าตัวเองติดอยู่ในวงจรของความเมื่อยล้าและความไม่พอใจอย่างไม่หยุดยั้ง ค่อยๆ สูญเสียชีวิตการทำงานไป
เมื่อสัปดาห์ที่แล้วฉันสังเกตเห็นข่าวประชาสัมพันธ์ที่เผยแพร่ผ่าน PressGazette (เว็บไซต์ข่าวของสื่ออังกฤษ) บทความประกาศว่า Acast ซึ่งเป็นบริษัทโฮสติ้งและโฆษณาพอดคาสต์ของ Scandi จะเป็นผู้นำกลุ่มผู้เผยแพร่ "อาจมีอิทธิพลมากที่สุด" ในพอดคาสต์