- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 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;
}
}
}
}
为什么 isJumpPressed 总是假的。我究竟做错了什么?据我所知,这应该可行,但我显然错过了一些东西
isJumpPressed = Input.GetKeyDown("a");
任何人都知道为什么这会起作用而不是
isJumpPressed = Input.GetKeyDown(KeyCode.Space);
或者
isJumpPressed = Input.GetKeyDown("space");
更新 2:
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
不是一个接一个地调用。 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
这是一个每次按空格键时打印“更新跳转”的示例,只有在您按空格键时才打印“固定更新跳转”。不要这样做:
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;
}
}
关于c# - unity Input.GetKeyDown(KeyCode.Space) 未检测到按键按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63649028/
我正在尝试控制一组角色动画,但我在处理跳跃动画时遇到了问题。我的水平行走动画工作正常,但是当我按下跳跃按钮时,我希望播放两个跳跃动画之一,具体取决于玩家是处于空闲状态还是行走状态。但是,当我当前按下跳
所以我已经有了一个小的雪橇原型(prototype)。我目前正在编写一些控件来补充我应用的 RigidBody 物理。我的目标是在左转或右转的相反方向施加一个力,以获得一种打滑、边缘捕捉效果,然后向前
嘿,这是一个带有动画参数的简单脚本,但我不知道为什么我的 if with getkeydown 没有执行!如果没有按下键,它应该播放空闲动画,但那没有发生,而只是没有通过那部分代码。 public c
我正在制作一个系统,您可以在其中按下某个键,它会在您的鼠标位置放置一个对象。每次按下键“1”时,它都应该将其放在鼠标位置,但由于某种原因,每一帧 Input.GetKeyDown("Alpha1");
我正在尝试通过 this course over on Udemy.com 自学 C# 和 Unity 知识.在第一个示例中,创建了一个非常基本的文本冒险。现在从头开始,我使用了那里使用的相同游戏结构
我基本上是想在 Unity 2018 中制作幻灯片。我想每次都显示一个新图像,比如说,按下右箭头键。我可以通过每次按下右箭头键时加载一个全新的场景来做到这一点,但我可能有数千个场景(这是一个相当长的幻
我正在学习 Unity 但我的按键没有被检测到 using System.Collections; using System.Collections.Generic; using UnityE
我的问题是当我实例化一个 GameObject 时,它应该像我的 Player 一样翻转但当我向左转时,它只是转了一圈。 using UnityEngine; using System.Collect
我实际上正在学习用 c# 编写一些代码,以便在 unity5 中制作小游戏。我的问题是,当我运行脚本时,统一控制台正在发送垃圾邮件“按下向上箭头”和“按下向下箭头”,但我没有击中任何东西。 void
我在 Win 64 位机器上使用 Unity 5.1.1,它能够运行我正在创建的游戏。在制作 2D 横向卷轴时,我发现我的角色有时不会在出现提示时跳跃。这是代码: public float speed
我是一名优秀的程序员,十分优秀!