Я прошу прощения за несколько общий заголовок. Я действительно не очень разбираюсь в том, как выполнить то, что я пытаюсь сделать, что затрудняет даже поиск возможного решения.
Я пытаюсь реализовать своего рода маркер пути (может быть, есть наиболее подходящее название для него, но это лучшее, что я мог придумать).
Перед игроком будет маркер пути, который будет определять, как игрок будет двигаться после того, как он закончит планирование своего хода. Игрок может щелкнуть и перетащить маркер в выбранную им позицию, но маркер можно перемещать только в пределах определенной рабочей области (серый бит).
Итак, я застрял с двумя проблемами:
Прежде всего, как именно я должен определить эту рабочую область? Я могу представить, может быть, два вектора, в которых игрок является отправной точкой для формирования рабочего угла, и, может быть, эти две дуги могут исходить из кругов, в центре которых находится игрок, но я определенно не знаю, как все это поместить вместе.
И во-вторых, после того как я определил область, где маркер может быть размещен, как я могу обеспечить, чтобы маркер оставался только в этой области? Например, если игрок щелкает и перетаскивает маркер, он может свободно перемещаться в пределах рабочей области, но не должен выходить за границы области. Так, например, если игрок начинает перетаскивать маркер вверх, он будет двигаться вверх до тех пор, пока не достигнет конца рабочей области (первая диаграмма ниже), но если после этого игрок начнет перетаскивать вбок, маркер должен следовать за перетаскиванием, оставаясь неподвижным. в пределах области (вторая диаграмма ниже).
Я надеюсь, что это не слишком запутанно. Спасибо, парни.
Изменить: В случае, если это имеет значение, я использую C ++ с Marmalade SDK.