2015-06-28 2 views
1

Я новичок в кодировании, но я пытаюсь создать игру типа flash rpg. У меня есть барьер вокруг моей игры и ходячий человек (manmc). Я смотрел видео/читал статьи о том, как создавать барьеры объектов, но я не могу получить право кодирования без ошибок. Я пытаюсь заставить моего персонажа остановиться, когда он ударит по дереву. Дерево кодируется как (treer1_MC). Я только пытался скомпоновать его в прессе, но ничего не делает, и это заставляет персонажа не иметь возможности вернуться.Объектные барьеры в AS3?

import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 
import flash.display.MovieClip; 
import flash.events.Event; 
import flash.display.Stage; 

manmc.gotoAndStop ("Stand Front Frame"); 

var rightPressed:Boolean = new Boolean(false); 
var leftPressed:Boolean = new Boolean(false); 
var upPressed:Boolean = new Boolean(false); 
var downPressed:Boolean = new Boolean(false); 
var manSpeed:Number = 3; 

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); 
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); 
stage.addEventListener(Event.ENTER_FRAME, gameLoop); 

function keyDownHandler (keyEvent:KeyboardEvent):void 
{ 
    if(keyEvent.keyCode == Keyboard.RIGHT) 
    { 
     rightPressed = true; 
    } 
    else if(keyEvent.keyCode == Keyboard.LEFT) 
    { 
     leftPressed = true; 
    } 
    else if(keyEvent.keyCode == Keyboard.UP) 
    { 
     upPressed = true; 
    } 
    else if(keyEvent.keyCode == Keyboard.DOWN) 
    { 
     downPressed = true; 
    } 
} 

function keyUpHandler (keyEvent:KeyboardEvent):void 
{ 
    if(keyEvent.keyCode == Keyboard.RIGHT) 
    { 
     rightPressed = false; 
     manmc.gotoAndStop("Stand Right Frame"); 
    } 
    else if(keyEvent.keyCode == Keyboard.LEFT) 
    { 
     leftPressed = false; 
     manmc.gotoAndStop("Stand Left Frame"); 
    } 
    else if(keyEvent.keyCode == Keyboard.UP) 
    { 
     upPressed = false; 
     manmc.gotoAndStop("Stand Back Frame"); 
    } 
    else if(keyEvent.keyCode == Keyboard.DOWN) 
    { 
     downPressed = false; 
     manmc.gotoAndStop("Stand Front Frame"); 
    } 
} 

function gameLoop(loopEvent:Event):void 
{ 
    if(rightPressed) 
    { 
     if(manmc.x < 1050) 
     { 
      manmc.x += manSpeed; 
     } 
     manmc.gotoAndStop("Walk Right Frame"); 
    } 
    else if(leftPressed) 
    { 
     if (manmc.x > 145) 
     { 
      manmc.x -= manSpeed; 
     } 
     manmc.gotoAndStop("Walk Left Frame"); 
    } 
    else if(downPressed) 
    { 
     if(manmc.y < 780) 
     { 
     manmc.y += manSpeed; 
     } 
     manmc.gotoAndStop("Walk Front Frame"); 
    } 
     if (manmc.hitTest(treer1_MC)) 
    { 
      trace("leftHit"); 
      manmc._x += 3; 

    } 
    else if(upPressed) 
    { 
     if(manmc.y > 145) 
     { 
      manmc.y -= manSpeed; 
     } 
     manmc.gotoAndStop("Walk Back Frame"); 
    } 
} 

Это кодирование учебника, которое, как сказано, используется. Какие-либо предложения?

if (manmc.hitTest(treer1_MC)) 
     trace("leftHit"); 
     manmc._x += 3; 

ответ

1

Это только потому, что декларация о состоянии столкновения находится за пределами вашего "downPress" Состояние:

else if(downPressed) 
{ 
    if(manmc.y < 780) 
    { 
    manmc.y += manSpeed; 
    } 
    manmc.gotoAndStop("Walk Front Frame"); 
} 
    if (manmc.hitTest(treer1_MC)) 
{ 
     trace("leftHit"); 
     manmc._x += 3; 

} 

проблемы отступа :), правильно должно быть:

else if(downPressed) 
{ 
    if(manmc.y < 780) 
    { 
    manmc.y += manSpeed; 
    } 
    manmc.gotoAndStop("Walk Front Frame"); 

    if (manmc.hitTest(treer1_MC)) 
    { 
     trace("leftHit"); 
     manmc._x += 3; 
    } 
} 

Я надеюсь, что это поможет;)

Редактировать:

manmc.hitTest (treer1_MC)

должно быть:

manmc.hitTestObject (treer1_MC)

Поскольку функция: HitTest() является функцией AS2 на AS3 Whe есть : hitTestPoint() и hitTestObject();)

+0

Все еще выдавала ошибку :("TypeError: Error # 1006: hitTest не является функцией. \t в Start_fla :: MainTimeline/gameLoop()» –

+0

Ну и еще одна вещь: manmc.hitTest (treer1_MC) должно быть:. manmc hitTestObject (treer1_MC) –

+0

Спасибо так много !! –

Смежные вопросы