Воскресенье, 22 Декабря 2024, 09:00

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Нужна помощь при движении обьектов
eventideДата: Воскресенье, 31 Октября 2010, 21:39 | Сообщение # 1
композитор-лапочка
Сейчас нет на сайте
Все облазил, не нашел как сделать так,чтобы обьект передвигался по стрелкам, и как бы смотрел в направление гдк курсор. Помогите плз, АС 3 изучаю день всего.


Мой проект
SwordOfTruthДата: Вторник, 02 Ноября 2010, 10:15 | Сообщение # 2
был не раз
Сейчас нет на сайте
Управление клавиатурой:
1) в начале добавляешь слушателей событий

addEventListener(Event.ENTER_FRAME, enterFrame);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);

2) AS3 реагирует только на действие клавиш "нажать"/"отпустить", но он не запоминает уже нажатых клавиш, поэтому придётся его "научить" запоминать их. Создадим "булевые" (да/нет) переменные:

var left:Boolean = false;
var right:Boolean = false;
var up:Boolean = false;
var down:Boolean = false;

3) Теперь создадим функции для слушателей keyUp и keyDown.

function keyDown(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT) left = true;
else if(e.keyCode == Keyboard.RIGHT) right = true;
else if(e.keyCode == Keyboard.UP) up = true;
else if(e.keyCode == Keyboard.DOWN) down = true;

}
function keyUp(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT) left = false;
else if(e.keyCode == Keyboard.RIGHT) right = false;
else if(e.keyCode == Keyboard.UP) up = false;
else if(e.keyCode == Keyboard.DOWN) down = false;

}

Опишу логику, чтобы было понятно:
Если(код клавиши = клавиша влево) left = истина; иначе если(код клавиши = клавиша вправо) right = истина; иначе если(код клавиши = клавиша вверх) up = истина; иначе если(код клавиши = клавиша вниз) down= истина;
Для функции отжатой клавиши аналогично только, переменным присваивается значение false(ложь).

4) Теперь создаёшь функцию каждого кадра enterFrame и говоришь ей что делать если та или иная клавиша нажата. Допустим ты создал машину с "именем экземпляра" (во вкладке "свойства") : CAR. Тогда:

function enterFrame(e:Event):void
{

if(left){
CAR.x -= 5;
}
if(right){
CAR.x += 5;
}
if(up){
CAR.y -= 5;
}
if(down){
CAR.y += 5;
}

5) Чтобы твоя машина смотрела в сторону курсора (ыыыыыы smile ) надо добавить в функцию каждого кадра следующее:

function everFrame(e:Event):void
{
CAR.rotation = (Math.atan2(mouseY - CAR.y,mouseX - CAR.x) * 180) / Math.PI ;
}

Примечание:
1) "5" - это фактически скорость, можешь задать ей какой-либо переменной.
2) координата Х направлена вправо, Y вниз.
3) если хочешь использовать другие клавиши клавиатуры то нужно знать их код, узнать его можно так:

function keyDown(e:KeyboardEvent):void
{
trace(e.keyCode);
}

В строке вывода сообщение тебе выведется число (код клавиши), его засунешь в условия if(e.keyCode == 87) //87 - код клавиши W

4) Есть немного другие способы движения, более реалистичные: например изменять координату через угол поворота и с ускорением.
5) Советую посмотреть сайт easyflash.org там есть бесплатные видео-уроки по этому поводу.

Сообщение отредактировал SwordOfTruth - Вторник, 02 Ноября 2010, 10:21
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг