Quick Links: Download Gideros Studio | Gideros Documentation | Gideros community chat | DONATE
Points and enemys? — Gideros Forum

Points and enemys?

BramVBramV Member
edited October 2012 in Code snippets
Hey,,
I'm making a game where you need to shoot enemys and climb to the top to get points.
I already have my character! Buth how do you make enemys fall randomly out of the 'sky'.
and how do i insert points from 0 to ... that goes up when you go up...?
Pleas help me ou! :)
Grtz Bram

Comments

  • Hey!
    into Gideros Studio, this example there. Maybe help you. Sorry my bad English ;)

    --[[

    This code is MIT licensed, see http://www.opensource.org/licenses/mit-license.php
    (C) 2010 - 2011 Gideros Mobile

    ]]

    require "box2d"

    b2.setScale(20)

    -- this function creates a box sprite with 2 happy and sad children
    local function createBoxSprite(sx, sy)
    local happy = Bitmap.new(Texture.new("happy-box.png", true))
    happy:setAnchorPoint(0.5, 0.5)

    local sad = Bitmap.new(Texture.new("sad-box.png", true))
    sad:setAnchorPoint(0.5, 0.5)

    local sprite = Sprite.new()
    sprite:addChild(happy)
    sprite:addChild(sad)

    sprite:setScale(sx, sy)

    return sprite
    end

    -- this table holds the dynamic bodies and their sprites
    local actors = {}

    -- create world
    local world = b2.World.new(0, 9.8)

    -- create a ground body and attach an edge shape
    local ground = world:createBody({})
    local shape = b2.EdgeShape.new(-200, 480, 520, 480)
    ground:createFixture({shape = shape, density = 0})

    -- every 3 seconds, we create a random box
    local function onTimer()
    local sx = math.random(70, 100) / 100
    local sy = math.random(70, 100) / 100

    local body = world:createBody{type = b2.DYNAMIC_BODY, position = {x = math.random(0, 320), y = -35}}

    local shape = b2.PolygonShape.new()
    -- box images are 70x70 pixels. we create bodies 1 pixel smaller than that.
    shape:setAsBox(34.5 * sx, 34.5 * sy)
    body:createFixture{shape = shape, density = 1, restitution = 0.1, friction = 0.3}

    local sprite = createBoxSprite(sx, sy)
    stage:addChild(sprite)

    actors[body] = sprite
    end

    -- set the timer for every 3 seconds
    local timer = Timer.new(3000, 0)
    timer:addEventListener(Event.TIMER, onTimer)
    timer:start()
    onTimer() -- create a box immediately

    -- step the world and then update the position and rotation of sprites
    local function onEnterFrame()
    world:step(1/60, 8, 3)

    for body,sprite in pairs(actors) do
    sprite:setPosition(body:getPosition())
    sprite:setRotation(body:getAngle() * 180 / math.pi)

    if body:isAwake() then
    sprite:getChildAt(1):setVisible(false)
    sprite:getChildAt(2):setVisible(true)
    else
    sprite:getChildAt(1):setVisible(true)
    sprite:getChildAt(2):setVisible(false)
    end
    end

    for body,sprite in pairs(actors) do
    if sprite:getY() > 600 then
    world:destroyBody(body)
    stage:removeChild(sprite)
    actors[body] = nil
    end
    end
    end

    stage:addEventListener(Event.ENTER_FRAME, onEnterFrame)
Sign In or Register to comment.