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

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

我正在创建一个 2D Unity 游戏,但我遇到了一个让我感到困惑的问题,我似乎无法找到如何获取上下文的键“E”的输入我正在尝试制作一个系统,当玩家站在商店上方按“E” 他们进入商店可以买东西

(第一个 if 语句是将商店更改为突出显示的颜色以使其清晰,所以忽略它,ShopSR 只是商店精灵渲染器的变量,也是现在而不是能够进入我刚刚使用的商店打印为占位符)

代码:

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

        if (other.CompareTag("Shop") && Input.GetKeyDown(KeyCode.E))
        {
            print("ENTER SHOP");
        }
    }
c# unity3d
2个回答
1
投票

进入扳机时,您将无法以闪电般的速度按下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");
            }
        }

0
投票

你可以这样做:

    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

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