unity3d Unity 2D不知道如何获取键“E”的输入

wfsdck30  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(126)

我正在创建一个2D Unity游戏,但我遇到了一个让我感到困惑的问题,我似乎无法找到如何获得输入键“E”的上下文我试图制作一个系统,当玩家站在商店并按下“E”时,他们进入商店并可以购买东西
(the第一个if语句是将商店更改为突出显示的颜色以使其清晰,因此忽略它,ShopSR只是商店精灵渲染器的变量,现在也不能进入商店,我只是使用print作为占位符)
验证码:

private void OnTriggerEnter2D(Collider2D other)
    {
        if(other.CompareTag("Shop"))
        {
            ShopSR.sprite = ShopHighlighted;
        }

        if (other.CompareTag("Shop") && Input.GetKeyDown(KeyCode.E))
        {
            print("ENTER SHOP");
        }
    }
wh6knrhe

wh6knrhe1#

你将无法在进入触发时以 lightning 般的速度按下E键,当然你可以设法按下它,但这是最有可能的铁杆球员。如果你想使用输入,那么你需要更新它的每一帧:

//Called one frame when the trigger is entered
  private void OnTriggerEnter2D(Collider2D other)
        {
            if(other.CompareTag("Shop"))
            {
                ShopSR.sprite = ShopHighlighted;
            }    
        }
  //Called every time an object is in a trigger
  private void OnTriggerStay2D(Collider2D other)
        {
    
            if (other.CompareTag("Shop") && Input.GetKeyDown(KeyCode.E))
            {
                print("ENTER SHOP");
            }
        }
zengzsys

zengzsys2#

你可以这样做:

bool isOnShop;

    void Update(){
        if(Input.GetKeyDown(KeyCode.E) && isOnShop)
            // User is on shop, do your code
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if(other.CompareTag("Shop"))
        {
            ShopSR.sprite = ShopHighlighted;
            isOnShop = true;
        }
    }

    private void OnTriggerExit2D(Collider2D other){
        isOnShop = false;
    }

或者使用OnTriggerStay2D遵循上述建议

相关问题