Первое замечание: математически я совсем не так хорош.
Некоторое время назад я играл в игру на iPhone, где вы нажимаете точку, и из вашего замка вылетает стрела, которая всегда будет пересекать точку, которую вы нажали. Я хотел сделать похожую игру, думая, что это будет легко и быстро; затем я столкнулся с осознанием того, что математика для этого на самом деле выходит за рамки моего уровня навыков.
Я предполагаю, что они используют формулу параболы или что-то такое, что определяет скорость и угол, необходимые, когда стрелка запускается для стрелки
Я лишь смутно помню, как работают параболы со школы, и у меня нет шансов вычислить какие-либо формулы.
Любая математическая помощь или идеи, которые могут быть проще реализовать, были бы замечательными.
Я хочу, чтобы в моем замке была такая функция:
package
{
import avian.framework.objects.AvElement;
public class Castle extends AvElement
{
/**
* Fires an arrow from this
* @param ix The x intersection point
* @param iy The y intersection point
*/
public function fire(ix:Number, iy:Number):void
{
var ar:Arrow = new Arrow();
ar.x = x;
ar.y = y;
// define angle and velocity based on ix, iy
// ar.fireAngle = ??
// ar.fireVelocity = ??
parent.addChild(ar);
}
}
}
Обновите в соответствии с вопросами в комментариях:
К стрелке не будут применяться силы, такие как ветер, трение и т. Д.
Чтобы быть максимально ясным:
Примечание: Чтобы избежать проблемы бесконечности возможных парабол - скорость стрелки может быть фиксированной - просто посмотрите на определение угла, под которым стрела может уйти.