2017-03-01 4 views
1

캔버스 상단에서 떨어지는 객체 (원)와 관련된 게임을 만드는 중입니다. 나는이 원들을 무작위로 x 좌표에서 생성 한 다음 일정한 속도로 떨어 뜨린다. 충돌 알고리즘을 작성하려고하지만 x 좌표 또는 폭/높이가 떨어지는 원에 액세스 할 수 없습니다.자바 스크립트를 사용하여 배열의 특정 객체에서 x 및 y 좌표 가져 오기

이것은 원을 만들어 배열에 넣는 방법입니다. var에 발사체는 = [] 이미 내 코드의 상단

function spawnEnemies() 
{ 
    var g1 = new createjs.Graphics(); 
    g1.beginStroke('white').beginFill('red').drawCircle(Math.floor(Math.random() * 650) + 50, 50, 20); 
    var e = new createjs.Shape(g1); 
    projectiles.push(e); 
    stage.addChild(e); 
} 

이 내가 x와 원의 y 좌표에 액세스하고 또한 그들의 폭과 높이를 검색하려고 내 충돌 알고리즘에 선언했다. console.log를 사용하여 어떤 값이 반환되는지 확인하고 확인했습니다. p.x의 경우 매번 값 0이 반환되고 p.width는 NaN을 반환합니다. 나는 왜 p.x와 p.width가 작동하지 않는지 혼란 스럽다. Shape

function checkCollision() 
{ 

for (i = 0; i < projectiles.length; i++) { 
    var p = projectiles[i]; 
    if((p.x + width) < ship.x) 
    { 
     hit = false; 
    } 
    else if(p.x > (ship.x + ship.image.width)) 
    { 
     hit = false; 
    } 
    else if(p.y > (ship.y + ship.image.height)) 
    { 
     hit = false; 
    } 
    else if((p.y + p.height) < ship.y) 
    { 
     hit = false; 
    } 
    else 
    { 
     hit = true; 
     console.log(p.x); 
    } 
} 

답변

0

xy 속성을 변환하는 데 사용할 수 있습니다. 당신의 코드에서, 그것들을 기본값 (0)으로 남겨두고 Shape의 캔버스의 특정 위치에 원을 그립니다.

x에 원의 위치가 반영되도록하려면 spawnEnemies을 변경하여 모양의 원점에 항상 원을 그 다음에 x을 원하는 위치로 설정하는 것이 좋습니다.

g1.(...).drawCircle(0, 50, 20); 
var e = new createjs.Shape(g1); 
e.x = Math.(...); 
+0

기본 코드 예제를 제공해 주시겠습니까? 나는 당신이 무엇을 의미하는지 완전히 이해하지 못한다고 생각한다. – Jay2424

+0

ok | : 약간의 코드 추가 – guest

관련 문제