【问题标题】:2d Array track player movement into specific spaces around an entity2d Array 跟踪玩家移动到实体周围的特定空间
【发布时间】:2020-09-01 07:30:00
【问题描述】:

好的,所以我需要数组方面的帮助,我有一个玩家可以移动的二维数组,此时我正在随机生成一个实体,并且玩家应该能够与之交互。我有一个相当长的 if 语句来跟踪玩家是否接近实体,但无法增加触发提示的范围。这个 if 语句很长,有时让我感到沮丧,但如下所示;

if(((getPlayerX() == getEntityX() - getPlayerRange()) || (getPlayerX() == getEntityX() + getPlayerRange()) || (getPlayerX() == getEntityX())) && ((getPlayerY() == getEntityY() - getPlayerRange()) || (getPlayerY() == getEntityY() + getPlayerRange()) || (getPlayerY() == getEntityY()))){

但是,当范围增加到 2(从其默认值是 1)时,这不再有效。我想实现这一点,以便具有更高范围的玩家仍然可以与该实体进行交互。有没有更简单的方法可以更有效地做到这一点?

【问题讨论】:

    标签: java arrays if-statement


    【解决方案1】:

    这样的事情怎么样:

    int xDistance = Math.abs(getPlayerX() - getEntityX());
    int yDistance = Math.abs(getPlayerY() - getEntityY());
    
    if (xDistance <= getPlayerRange() && yDistance <= getPlayerRange()){ ... }
    

    计算绝对距离,然后与玩家范围比较。

    尽管它的代码比您当前的版本多,但在我看来,即使范围为 1,它也更具可读性。

    【讨论】:

    • 是的,这很好用,非常感谢老兄,已经卡了一段时间了,抱歉回复晚了,刚刚实现了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2017-02-20
    • 1970-01-01
    • 2023-02-25
    相关资源
    最近更新 更多