У меня возникли проблемы с синтезом расширенной формулы проекции объекта. Я уже понял несколько основных формул физического моделирования, таких как:
- Скорость объекта:
x += cos(angle); y += sin(angle);
*где угол можно получить либо по положению мыши, либо с помощью tan(...target и начальные значения)
но это только движется прямо в зависимости от угла.
Гравитация:
Yvelocity = Yvelocity - gravity; if(!isHitPlatform) { Obj.y += YVelocity }
Отказ:
// No point if we've not been sized... if (height > 0) { // Are we bouncing... if (bounce) { // Add the vDelta to the yPos // vDelta may be postive or negative, allowing // for both up and down movement... yPos += vDelta; // Add the gravity to the vDelta, this will slow down // the upward movement and speed up the downward movement... // You may wish to place a max speed to this vDelta += gDelta; // If the sprite is not on the ground... if (yPos + SPRITE_HEIGHT >= height) { // Seat the sprite on the ground yPos = height - SPRITE_HEIGHT; // If the re-bound delta is 0 or more then we've stopped // bouncing... if (rbDelta >= 0) { // Stop bouncing... bounce = false; } else { // Add the re-bound degregation delta to the re-bound delta rbDelta += rbDegDelta; // Set the vDelta... vDelta = rbDelta; } } } }
Мне нужна помощь, чтобы объединить эти три формулы для создания эффективного и легкого алгоритма, который позволяет объекту проецироваться по арке, определяемой углом, но продолжает отскакивать несколько раз, прежде чем остановиться, все с приемлемым количеством разрыв между каждой точкой. *Примечание. Определение гранаты по формуле af(x) = -x^2 приводит к увеличению разрыва прыжка по мере увеличения уклона, что вынуждает вас обращать формулу, чтобы найти значение x = +-y. (чтобы определить + или -, проверьте границы).