Я бы посоветовал не использовать векторную графику (NSBezierPath) для того, что вам нужно для достижения.
Вы можете использовать CGPoint для представления позиции для каждого игрового объекта (при условии, что это 2D-игра).
(Поместите эту структуру в класс GameObject).
struct objectPhysics
{
CGPoint position;
CGPoint velocity;
}
Используйте векторы скорости и направления для расчета траектории объекта. Предполагая, что следующие векторы:
position = position * velocity * timeDifference;
Когда происходит событие (например, пользователь нажимает на объект или обнаруживает столкновение), установите вектор скорости на значение (1, 0,5) или что-то, что означает перемещение +1 в направлении X и 0,5 в Y направление на кадр (или единицу времени, если у вас есть «* timeDifference»).
Вам следует взглянуть на этот сайт , чтобы получить советы по началу программирования игры и некоторые векторные математические вычисления , которые вам понадобятся для расчета направления, в котором вам нужно ускоряться. .
Разница во времени - это мера того, сколько времени прошло с момента использования последнего кадра, чтобы убедиться, что объекты перемещаются на нужное расстояние, чтобы синхронизироваться с частотой кадров.