Создание объекта в ActionScript, который имеет двухмерное движение и останавливается при ударе о стену
Я хочу сделать квадрат, который имеет движение клавиатуры (вверх, вниз, влево, вправо) и остановится, когда он столкнется с другим объектом, таким как стена.
РЕДАКТИРОВАТЬ: У меня уже есть квадрат и раскладка клавиатуры, но если это должно быть что-то конкретное, то, пожалуйста, скажите мне!
1 ответ
Решение
Джексон, все, что тебе нужно сделать, это
- Слушай ключи
- обновить свой характер
- проверить на предмет коллизий
Вы не являетесь конкретным, но я на 100% уверен, что если вы немного погуглите в том, что вам нужно, вы найдете это, поскольку есть множество обучающих программ по флэш-играм.
Вот минимальная настройка
//needed to update the position
var velocityX:Number = 0;
var velocityY:Number = 0;
//draw the ball
var ball:Sprite = new Sprite();
ball.graphics.beginFill(0);
ball.graphics.drawCircle(0,0,20);
ball.graphics.endFill();
addChild(ball);
ball.x = ball.y = 100;
//setup keys
stage.addEventListener(KeyboardEvent.KEY_DOWN, updateBall);
function updateBall(event:KeyboardEvent):void{
switch(event.keyCode){
case Keyboard.RIGHT:
if(velocityX < 6) velocityX += .25;
break;
case Keyboard.LEFT:
if(velocityX > -6) velocityX -= .25;
break;
case Keyboard.DOWN:
if(velocityY < 6) velocityY += .25;
break;
case Keyboard.UP:
if(velocityY > -6) velocityY -= .25;
break;
}
//update ball position
ball.x += velocityX;
ball.y += velocityY;
//check walls , if collision, flip direction
if(ball.x > stage.stageWidth || ball.x < 0) velocityX *= -1;
if(ball.y > stage.stageHeight|| ball.y < 0) velocityY *= -1;
}
Очевидно, что он не идеален, но он прост и легко иллюстрирует состояния точек наверху. Возможно, вы захотите использовать некоторые гладкие клавиши и обновить свою игру на EnterFrame.
Удачи