gpt4 book ai didi

c# - 如何检查某个位置的对象?

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:30 25 4
gpt4 key购买 nike

我有一个黑色 targetBox,用于检查它覆盖的区域是否存在 Block 对象,例如左上角的灰色对象,如果该位置有 Block,则返回一个 bool 值。这是一个 tile 系统,我已经包括了一个返回“false”的情况和一个返回“true”的情况。

This would return false

This would return true

我知道我可以做类似的事情

public bool checkTargetObjects()
{
if(block.x == target.x && block.y == target.y)
{
return true;
}
else
{
return false;
}
}

但我不确定如何在该位置查找 Block 对象。我该怎么做?

最佳答案

不是存储图 block 的 X 和 Y 位置,而是将该数据保存为 Rectangle .您唯一需要的额外东西是瓷砖的宽度和高度(在某处应该是常量)。

所以不用

public class Block 
{
public int X { get; set; }
public int Y { get; set; }
}

你可以拥有

public class Block 
{
public Rectangle Area { get; set; }
}

然后您可以获取所有 block (假设您将它们全部放在一个名为 List<Block>blocks 中)并遍历它们以查看哪个与您的 Target 相交:

var blocksInTarget = blocks.Where(b => b.Area.Intersects(target.Area));

哪里Area是你的矩形。

如果你只想知道是否有一个矩形(而不是哪些),你可以更改 WhereAny ,你可以读作“如果有任何 block 与我的目标相交,则返回 true”:

bool isBlockPresent = blocks.Any(b => b.Area.Intersects(target.Area));

关于c# - 如何检查某个位置的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com