由于某种原因,我的代码将2加到了变量而不是1上,我不知道为什么

在线我

我使用C#在Unity中进行编码,并且设置了与变量相等的不同精灵iA被按下它应该加1 i,并且当D它被按下应该减去1,改变依赖于子画面i的值。直到昨天我再次打开它时,它一直运行良好,现在由于某种原因它只会加减2而不是1。在开始执行此操作之前,我在代码中没有做任何更改,但我不知道为什么。我的代码在下面。

public void Start()
{
    //Sets i to 4 and spriteRenderer to the current Sprite Rendered.
    i = 4;
    d = 1;
    Score1 = 0;
    spriteRenderer = this.GetComponent<SpriteRenderer>();
}

void OnTriggerEnter2D(Collider2D Death)
{
    //Detects if there is a collision and sets d to 0.
    d = 0;
}

public void Update()
{
    //A bunch of if statements to detect the input key and if the input key is set to GunAngleDown then adds 1 to i or if the input key is set to GunAngleUp the subtracts 1 from i.
    if (Input.GetKeyDown(GunAngleDown))
    {
        i++;
    }
    else if (Input.GetKeyDown(GunAngleUp))
    {
        i--;
    }

    //If i is equal to 8 then subtracts 1 from i or if i is equal to 0 then adds 1 to i.
    if (i == 8)
    {
        i--;
    }
    else if (i == 0)
    {
        i++;
    }

    //checks the current i value and sets the current sprite rendered to the respective sprite.
    if (i == 1)
    {
        spriteRenderer.sprite = SpriteGunAngleUp3;
    }
    else if (i == 2)
    {
        spriteRenderer.sprite = SpriteGunAngleUp2;
    }
    else if (i == 3)
    {
        spriteRenderer.sprite = SpriteGunAngleUp1;
    }
    else if (i == 4)
    {
        spriteRenderer.sprite = SpriteGunAngleStraight;
    }
    else if (i == 5)
    {
        spriteRenderer.sprite = SpriteGunAngleDown1;
    }
    else if (i == 6)
    {
        spriteRenderer.sprite = SpriteGunAngleDown2;
    }
    else if (i == 7)
    {
        spriteRenderer.sprite = SpriteGunAngleDown3;
    }

    //Checks if d2 is equalt to 0 and sets the rendered sprite to the dead sprite.
    if (d == 0)
    {
        spriteRenderer.sprite = Dead;
    }
}
库巴并没有忘记莫妮卡

似乎您无法精确控制何时Update调用,并且可以在某个键碰巧被按下时任意多次调用它。取而代之的是,您应该只计算以前是向上但现在是向下的键。在方法结束时存储当前键状态,并在方法开始时使用它来触发键没有按下但现在按下的状态。如果需要,您可能需要实施密钥自动重复。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我正在使用转发器将标签动态添加到 asp.net 页面,但由于某种原因,文本垂直堆叠。有谁知道为什么会这样?

由于某种原因,我的ban命令无法正常工作,而且我不知道要对其进行修复(discord.py)

我不知道为什么我得到了System.IndexOutOfRangeException?C#

我不知道为什么这段代码在使用 PC 而不是在 Mac 上时在我的 csv 文件上写空行

由于某种原因无法加载我的JavaScript

由于某种原因,我无法致电setup()

由于某种原因,我无法安装 numpy

我的代码给了我一个元组错误,我不知道为什么

我无法拖动图像,jQuery 代码由于某种原因不起作用

我不知道为什么我得到AttributeError

我的陈述无效,我也不知道为什么

我不知道为什么我的代码是错误的?那是什么错呢?

我的python代码没有将数据插入数据库。我不知道为什么?

我不知道为什么我得到“未定义的不是函数”错误

我的标题不是 100% 的屏幕宽度,我不知道为什么?

当我尝试编译这个 C 代码时,我得到了一个无限真实的 bool 错误,我不知道为什么

我使用捆绑传输数据,但由于某种原因,数据仅传输1次

我删除结构条目的代码没有删除,我不知道为什么

我不知道为什么我在 jsp 文件中收到这个简单代码的错误

除了ValueError在我的代码中不起作用我不知道为什么

我的Matlab代码不起作用,但我不知道为什么?

R-我不知道为什么我的代码无法运行?

我的 Javascript 代码返回 null,我不知道为什么

我的函数没有返回变量,我不知道为什么

我不知道为什么我的变量总是重置为0?

我不知道为什么函数不使用我的变量

我在约束布局上出现膨胀异常,我不知道为什么

我的 C 程序在新行上打印 -39,我不知道为什么

ArgumentOutOfRangeException,我不知道为什么