Обнаружение столкновений с ActionScript 3.0
Привет, я начинающий разработчик Flash Action Script 3.
Я использую hitTestPoint(), чтобы обнаружить столкновение между автомобилем и сценой. Машина движется на сцене, поэтому я использую hitTestPoint().
Есть проблема, скажем так.
Автомобиль - это квадрат, на самом деле это идеальный квадрат прямо сейчас.
Я делаю это:
heightHalf = car.height / 2;
widthHalf = car.width / 2;
if(level.hitTestPoint(car.x + widthHalf, car.y + heightHalf,true)){
trace( "Right Collision" );
}
Он должен работать так, как car.x + половина его с должна возвращать точку на оси х, которая сталкивается и совпадает с осью y. Но это не работает.
Когда моя машина сталкивается с правыми стенами, она не вызывает ошибок или следов, но если я перевожу свою машину дальше со сцены (так как машина может проходить сквозь стены) непосредственно перед тем, как она может полностью выехать, она выдает ошибку трассировки как раз влево сторона сталкивается со стенами.
Эти картинки должны помочь:
Правое столкновение без ошибок: http://i.minus.com/ibqvrbNHuLTTIX.png
Ошибка, но не с той стороны: http://i.minus.com/iGRNRVmCwwY4x.png
Инвертирование + - также не помогает.
1 ответ
Обратите внимание, где находится точка привязки на объекте автомобиля. Поскольку вы используете Flash IDE, точка привязки может находиться в среднем, правом или левом углу.
Также вам понадобится несколько очков, чтобы сделать этот тип hitTesting. по крайней мере один на каждую сторону автомобиля.
Если ваша точка регистрации находится в верхнем левом углу, значит, вы попали в среднюю точку вашего автомобиля. Таким образом, он будет регистрировать столкновения только тогда, когда половина автомобиля пересекает стену.
Проверьте вашу регистрационную точку. Когда вы создаете новый мувиклип или спрайт, вы можете выбрать точку регистрации, щелкнув один из 9 блоков на квадрате, который появляется под названием объекта.