我如何同时使用arduino控制器和键盘?

问题描述 投票:0回答:1

如何同时使用控制器和键盘?

所以我使用Arduino作为控制器,并以ReadByte()作为输入这是我给播放器的脚本

void Start() 
{      
    controller = GetComponent<Controller2D>();  // Je krijgt toegang tot de script Controller2D
    sp.DtrEnable = true;
    sp.ReadTimeout = 100;       

    sp.Open();  // Uw serialpoort openen      
}

void Update() 
{
    if (sp.IsOpen)    // Als uw serialpoort open is
    {
        try
        {
            print(sp.ReadByte());   // Ga je de inkomende waarde lezen
        }
        catch (System.Exception) { }
    }      

    if (controller.collisions.above || controller.collisions.below)    // Als je een botsing hebt van boven of beneden dan ga je stoppen met springen
    {
        moveDistance.y = 0;
    }

    if (Input.GetKeyDown(KeyCode.Space) || sp.ReadByte() == 1 && controller.collisions.below)   // Als je op spatie drukt en als je op een platform staat dan ga je boven springen
    {
        moveDistance.y = jumpDistance;  // Je gaat springen langs de y-as
        //moveDistance.x = 0;     // Als je alleen springt dan ga je loodrecht boven en niet schuin
    }

    Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));  // Je neemt de Horizontal en vertical inputs van de unity zelf

    if (sp.ReadByte() == 2)       // Als je de 2de drukknop indrukt
    {
        moveDistance.x = -moveSpeed ;   // Ga je links bewegen
    }
    if (sp.ReadByte() == 3)        // Als je de 3de druknop indrukt
    {
        moveDistance.x = moveSpeed;     // Ga je rechts bewegen
    }

    moveDistance.x = input.x * moveSpeed;   // Door input kan je nu links of rechts bewegen met de pijlen
    moveDistance.y += gravity * Time.deltaTime;     // Je valt met een zwaartekracht dus je gaat sneller en sneller vallen.       
    controller.Move(moveDistance * Time.deltaTime);     // Leest de input 
}

通常,我想同时拥有控制器和键盘作为输入,但是运行此游戏后,我立即得到一个

TimeoutException:操作已超时

错误,但是我可以使用Arduino作为输入,但是由于某种原因它只是被禁用了]]

如何同时使用控制器和键盘?因此,我使用Arduino作为控制器,并使用ReadByte()作为输入这是我的播放器脚本void Start(){controller = ...

unity3d controller serial-port arduino-uno timeoutexception
1个回答
0
投票

不确定可能是导致错误的原因,但通常我不会重复使用sp.ReadByte(),而只会使用[[once

© www.soinside.com 2019 - 2024. All rights reserved.