通过麦克风输入进行C#Pong游戏桨运动

时间:2018-10-09 09:39:05

标签: c# unity3d

im试图使用麦克风输入来创建Pong游戏,以用作桨的控件。代码(c#)的以下部分正在移动拨片。

void Update () 
{
    loudness=GetAveragedVolume() * sensitivty;
    if (loudness>=8)
    {
        this.GetComponent<Rigidbody2D>().velocity=new Vector2(this.GetComponent<Rigidbody2D>().velocity.y,4);
}

下面的这段代码不应该做吗?但是它不起作用

    else (loudness<=8) 
    {
        this.GetComponent<Rigidbody2D>().velocity=new Vector2(this.GetComponent<Rigidbody2D>().velocity.y,-4);
    }

这显然是一个简单的问题,但是我有点被这个菜鸟问题困在这里 预先感谢

编辑//我要做什么:

当麦克风接收到声音时,将操纵杆向上移动;如果没有声音,则将其向下放下,就像来自视觉放大器的值一样。

丹尼尔

1 个答案:

答案 0 :(得分:0)

鉴于Update ()被正确调用并且GetAveragedVolume()返回有意义的值,它必须看起来像这样:

void Update () {

    loudness = GetAveragedVolume() * sensitivty;

    if (loudness > 8) {
        this.GetComponent<Rigidbody2D>().velocity = new Vector2(this.GetComponent<Rigidbody2D>().velocity.x, 4);
    }
    else {
        this.GetComponent<Rigidbody2D>().velocity = new Vector2(this.GetComponent<Rigidbody2D>().velocity.x, -4);
    }
}

您的错误:

  • else (...)无效。使用else if(...)
  • 对于两个新向量的this.GetComponent<Rigidbody2D>().velocity.y分量,您使用this.GetComponent<Rigidbody2D>().velocity.x而不是x

一些提示:

  • 在大多数情况下,究竟使用浮点数对>=还是>都没有关系,而对于您的浮点数绝对没有关系。
  • 在这里
  • else就足够了。您不需要检查else if (loudness <= 8),因为如果不是> 8,则它总是<= 8
  • 通常,您编写a = b; / a, b而不是a=b; / a,b,以使代码更具可读性。

我希望对您有用!