- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
嘿,这是一个带有动画参数的简单脚本,但我不知道为什么我的 if with getkeydown 没有执行!如果没有按下键,它应该播放空闲动画,但那没有发生,而只是没有通过那部分代码。
public class PlayerMovement : MonoBehaviour {
private Rigidbody2D rigidbodyMurrilo;
public float speed;
public Animator anim;
public bool FacingRigth;
public Transform transform;
private void Start()
{
rigidbodyMurrilo = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
FacingRigth = true;
}
void FixedUpdate()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
HandleMovement(horizontal);
Flip(horizontal);
}
void HandleMovement(float horizontal)
{
rigidbodyMurrilo.velocity = new Vector2(horizontal * speed, rigidbodyMurrilo.velocity.y);
}
private void Update()
{
if (Input.GetKeyDown("d") || Input.GetKeyDown("left") || Input.GetKeyDown("a") || Input.GetKeyDown("rigth"))
{
anim.Play("MoveRigth");
}
Debug.Log(Input.GetKey("d"));
if (Input.GetKeyUp("d") || Input.GetKeyUp("left") || Input.GetKeyUp("a") || Input.GetKeyUp("rigth"))
{
anim.Play("Idle");
}
}
private void Flip (float horizontal){
if(horizontal > 0 && !FacingRigth || horizontal<0 && FacingRigth)
{
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
FacingRigth = !FacingRigth;
}
}
最佳答案
这是因为 Input.GetKeyUp()
方法并不像您认为的那样工作:)。 Input.GetKeyUp()
的工作方式如下:
The method returns true during the frame the user releases the key identified by name.
我建议你像这样修改你的 if 语句:
if (Input.GetKeyDown("d") || Input.GetKeyDown("left") || Input.GetKeyDown("a") || Input.GetKeyDown("rigth"))
{
anim.Play("MoveRigth");
}
else
{
anim.Play("Idle");
}
或者第二次使用相同的语句并在其前面加上 !
。我希望这会有所帮助:)
关于c# - 我的 getkeydown 未被识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51231948/
我正在尝试控制一组角色动画,但我在处理跳跃动画时遇到了问题。我的水平行走动画工作正常,但是当我按下跳跃按钮时,我希望播放两个跳跃动画之一,具体取决于玩家是处于空闲状态还是行走状态。但是,当我当前按下跳
所以我已经有了一个小的雪橇原型(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
我是一名优秀的程序员,十分优秀!