【问题标题】:C# XNA rectangle collision detecting from which sideC# XNA 矩形碰撞检测从哪一侧
【发布时间】:2015-06-27 12:38:31
【问题描述】:

我有一个播放器矩形和一个墙矩形。我正在尝试确定玩家是从哪一侧撞到墙上的。

例如,如果玩家从左侧撞墙,则玩家不能继续向左穿过墙,但可以向上、向下或向右移动。

我如何确定玩家是从哪一侧撞墙的?

【问题讨论】:

  • 如果是C#问题,最好分享一段小而明确的C#代码sn-p,提出问题。
  • 并非所有问题都需要源代码,尤其是关于一般编程理论的问题。我认为添加代码 sn-p 根本不会改善这个问题。话虽如此,这可能不需要 C# 标记,因为它没有特定的语言。
  • 删除了 C# 标记,因为问题不是 C# 语言特定的。为了清晰起见,语法更正。我认为在您的最后一句话中,您的意思是说用户可以向左移动另一侧。有一个错字(使用了cant)。

标签: c# xna collision


【解决方案1】:

在更新玩家的位置和矩形之前,请保留旧矩形的记录,以便将其与新位置进行比较。例如:

// Keep a record of old rectangle
Rectangle oldPos = player.Rectangle;

// Update player position and rectangle here

// Check for collision
if (player.Rectangle.Intersects(wallRect))
{
    // Player has hit the wall. Now to find out which direction it has come from

    if (oldRect.Center.X < wallRect.Center.X)
    {
        // Player came from left of wall
    }
    else
    {
        // Player came from right of wall
    }
}

试试这个模板并将你的游戏逻辑融入其中。

【讨论】:

    猜你喜欢
    • 2016-08-31
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多