2016-11-20 8 views
0

필자는 paralax 스크롤을 수행하는 코드를 작성하려고합니다. "조각"테이블의 모든 스프라이트는 공중으로 쏘아 져야하고 y = 200 및 x = 임의 번호로 재설정됩니다. 나중에, 나는 그들이 진정한 3D 효과를 위해 얼마나 빨리 움직이는 지에 따라 그것들을 더 작게 또는 더 크게 만들 것입니다. 내가 원하는 출력을 얻을 ipairs (스프라이트, sprite1, 스프라이트 등) 내부의 "V"를 인쇄하는 경우루아의 테이블에있는 객체에 대해 코드를 반복하는 방법은 무엇입니까?

local speed = math.random(250,1000) 
pieces = { "sprite", "sprite1", "sprite2", "sprite3", "sprite4", 
"sprite5", "sprite6", "sprite7", "sprite8", "sprite9", "sprite10", 
"sprite11", "sprite12", "sprite13", "sprite14", "sprite15" } 

function update(self, dt) 
    for i, v in ipairs(pieces) do 
     p = go.get_position(v) 
     p.y = p.y + speed * dt 
     print(v) 
      if p.y > 800 then 
      p.y = -200 
      p.x = math.random(1,25) * math.random(10,35)*2 
      local speed = math.random(250,1000) 
     end 
     go.set_position(v) 
    end 
end 

, 그래서 제가 위가하는 일 것이라고 생각 : 여기

은 순진 시도이다 . 그렇지 않습니다. 어떤 도움이 필요합니까?

+1

글쎄, 당신은 그것을 반복하고 싶다 - 루프는 괜찮아, v는 그것을 보여준다. 당신이 원하는 것과 당신이 얻는 것을 설명해야합니다. "효과가 없다"는 설명이 아닙니다. 'speed'를 변경하지 않으면 'p.y> 800'분기의 내부에서 'speed'라는 로컬 변수를 선언하므로 해당 분기의 경우 새 임의 값이 외부에서 사용되지 않습니다. 다른 방법으로 작동하지 않는다면 설명해야합니다. – Vlad

+0

네 말이 맞아. 특정 문제가 있다는 것을 잊어 버렸습니다. p = go.get_position (v) 오류 메시지가 표시됩니다. 나는 내가 그 대상을 정확하게 참조하지 않는다고 믿는다. – josh

+0

그게 뭐니? 나는 '조각'배열에있는 이름으로 인덱싱 된 game_objects 컬렉션이라고 가정합니다. 그러나 그것이 당신의 표본에 어디에 있습니까? 함수에 get_position()/set_position()이 있습니까? 어떻게 정의 되는가? – Vlad

답변

1

다음은 올바른 코드입니다. 누구든지 이것을보고 설명이 필요한 경우 알려주십시오.

local speed = math.random(250,1000) 
--pieces = { "sprite1", "sprite2", "sprite3", "sprite4", "sprite5", "sprite6", "sprite7", "sprite8", "sprite9", "sprite10", "sprite11", "sprite12", "sprite13", "sprite14", "sprite15" } 
pieces = { "go1", "go2", "go3" } 

function update(self, dt) 
    for i, v in ipairs(pieces) do 
     p = go.get_position(v) 
     p.y = p.y + speed * dt 
     if p.y > 800 then 
      p.y = math.random(200,800)/-1 
      p.x = math.random(1,25) * math.random(10,35) * 2 
      local speed = math.random(250,1000) 
      go.set_position(p, v) 
      else 
      go.set_position(p, v) 
     end 
    end 
    end 
+0

팁 : 조각 테이블에 문자열을 저장하는 대신 객체의 ID를 저장할 수 있습니다 : 조각 = {go.get_id ("go1"), go.get_id ("go2"), go.get_id ("go3 ")}'. 많은 반복 작업을 수행하는 경우 엔진이 매번 수행해야하는 문자열에서 ID (해시) 로의 조회가 저장됩니다. –