【发布时间】:2016-09-14 17:02:42
【问题描述】:
我正在使用 Tiled (http://www.mapeditor.org) 来生成我的地图,并使用 TiledSharp (https://github.com/marshallward/TiledSharp) 来加载和绘制我的地图。
到目前为止一切顺利。地图绘制正确(在正确的图层中)并且英雄移动正确。
我没有得到什么。如何检查玩家和物体之间的碰撞?
在我的 Update() 中我有类似的东西
if (ks.IsKeyDown(Keys.W))
{
playerMovement += new Vector2(0, -2);
curAnimation = "Walk_North";
}
...
if (playerMovement.Length() != 0)
player.MoveBy(playerMovement);
检查地图的 .tmx 文件,我的组中有我可以碰撞的对象:
<objectgroup name="Collision">
<properties>
<property name="collision" type="bool" value="true"/>
</properties>
<object id="1" x="1089" y="1118" width="62" height="65"/>
<object id="2" x="801" y="1026" width="61" height="60"/>
</objectgroup>
我现在正在寻找的是类似的东西
If(tileAt(player.Position + playerMovement).Properties.Collision)
playerMovement = Vector2.Zero();
我想,我需要的一切都在那里,我只是缺少一个简单的步骤来比较玩家的位置与目标位置及其属性:(
任何建议或示例将不胜感激。 (也许只需要自己用简单的方法计算一下就可以了……)
【问题讨论】:
标签: collision-detection monogame tiled