Создайте конкретную плитку из функционала TileMap - PullRequest
0 голосов
/ 06 мая 2018

У меня есть следующая карта, созданная с помощью программного обеспечения Tiled, и я хочу сделать сундук работоспособным. На самом деле, я хочу знать, когда игрок и сундук перекрываются, но даже в поисках часов я не могу найти решение.

Я использую физику ARCADE. Я пытался использовать объектные слои, но ничего не работает ...

enter image description here

1 Ответ

0 голосов
/ 07 мая 2018

Одно очень простое решение - поместить объект поверх сундука в отдельный слой объектов. Когда вы загружаете карту в свою игру, проверьте все объекты в этом слое и сохраните ее где-нибудь (например, в списке)

Во время игры вы можете легко проверить, перекрывает ли ваш игрок один из ваших сундуков.

Подсказка: Вы можете дать вашим сундукам объекты идентификатор и другие параметры, чтобы определить их поведение.

Реализация выглядит примерно так:

Ваши объекты появляются в вашем .tmx

<objectgroup name="Container" offsetx="0" offsety="2">
  <object id="148" name="Chest1" x="72" y="3654">
   <properties>
    <property name="state" value="chest_closed"/>
    <property name="epic_Items" value="false"/>
    ...
   </properties>
  </object>
 </objectgroup>

Теперь просто разбери их в своей игровой логике

List<ItemContainer> lootableContainers = new List<ItemContainer>();
foreach (var o in curMap.ObjectGroups["Container"].Objects)
    lootableContainers.Add(new ItemContainer([o.params]));
...