从当前位置绕固定点旋转

需要将精灵围绕一个固定点移动。注意,这种运动应该从精灵的“当前位置”开始。

偏移角度即使用魔数并不行,因为当精灵与固定点之间的距离改变时,结果会不同。

参考图片:

enter image description here


    local block1Texture = Texture.new("block1.png",true)
    local block1 = Bitmap.new(block1Texture)
    block1:setAnchorPoint(0.5,0.5)
    stage:addChild(block1)
    block1:setPosition(50,50)

    local block2Texture = Texture.new("block2.png",true)
    local block2 = Bitmap.new(block2Texture)
    block2:setAnchorPoint(0.5,0.5)
    stage:addChild(block2)
    block2:setPosition(350,450)

    local block3Texture = Texture.new("block3.png",true)
    local block3 = Bitmap.new(block3Texture)
    block3:setAnchorPoint(0.5,0.5)
    stage:addChild(block3)
    block3:setPosition(300,700)

    local timer = Timer.new(500, 1)

    local rotateAroundBlock = block2

    function getCharAngleFromRope(startX, startY, targetX, targetY)
        local xdiff = targetX - startX
        local ydiff = targetY - startY
            local ang = math.atan2( ydiff, xdiff )
        ang = math.deg(ang) + 90.0
        if ang =application:getDeviceWidth()) then
            --print("1")
            --px = block3:getX()
        end

        if(py=application:getContentHeight()) then
            --print("2")
            --py = block3:getY()
            --px = block3:getX()
        end

        block3:setPosition(px,py)
    end
    dist = math.sqrt((rotateAroundBlock:getX()-block3:getX())^2+(rotateAroundBlock:getY()-block3:getY())^2)
    angle = getCharAngleFromRope(block3:getX(),block3:getY(),rotateAroundBlock:getX(),rotateAroundBlock:getY())
    timer:addEventListener(Event.TIMER_COMPLETE, onTimerComplete)

    function startMoving()
        timer:start()
    end
    stage:addEventListener(Event.TOUCHES_BEGIN, startMoving)
点赞
用户3258079
用户3258079

已解决。 如果其他人也遇到同样的问题,需要注意传入的参数需要使用弧度制而不是角度制,对于 math.cos 和 math.sin 函数而言。现在问题已得到解决。

2015-03-02 08:15:53