cocos2dx之伪3D,2D平面图片按比例缩放实例

下面是代码

require "app.views.Utility"

local FightScene = class("FightScene",cc.load("mvc").ViewBase)
function FightScene:onCreate()
   
end

function FightScene : getPosByColAndRowAndSize(col,row,size)
    return cc.p(size.width * (col + 1),size.height * row)
end

function FightScene:onEnter()
    local function createSpriteWithPathPosScale(path,pos,scale)
        local sprite = cc.Sprite:create(path)
        sprite : setAnchorPoint(cc.p(0.5,0.5))
        sprite : setPosition(pos)
        sprite : setScale(scale)
        return sprite
    end

    local size = cc.size(120,120)
    local node = display.newNode() --动画结点
    self : addChild(node)

    local colNumer = 2
    local rowNumber = 4
    local width = 120
    local height = 120

    for col = 0,colNumer - 1 do
        for row = 0,rowNumber - 1 do
            local pos = self : getPosByColAndRowAndSize(col,size)
            local role = createSpriteWithPathPosScale("role.png",1)
            node : addChild(role)
            local pos,scale = self : getPosScaleWithOriPos(pos.x,pos.y)
            role : setPosition(pos)
            role : setScale(scale)

            if row == 3 and col == 1 then 
                local oriPos = self : getPosByColAndRowAndSize(col + 2,size)
                local newPos,scale = self : getPosScaleWithOriPos(oriPos.x,oriPos.y)
                role : runAction(
                cc.Spawn : create(cc.MoveTo : create(1,newPos),cc.ScaleTo : create(1,scale))
                )
            end 
        end
    end

    node : setPosition(cc.p(0,(640 - (rowNumber - 1) *  size.height) / 2))


    node = display.newNode() --动画结点
    self : addChild(node)

    local colNumer = 2
    local rowNumber = 4
 
    for col = 0,pos.y)
            role : setPosition(pos)
            role : setScale(scale)

            if row == 1 and col == 1 then 
                local oriPos = self : getPosByColAndRowAndSize(col + 1,scale))
                )
            end 
        end
    end

    node : setScaleX(-1)
    node : setPosition(cc.p(960,(640 - (rowNumber - 1) *  size.height) / 2))
end

--透视化好友
function FightScene : getPosScaleWithOriPos(oriX,oriY)
    local x = oriX
    local y = oriY

    local lax = 100
    local lay = 257 + 1000
    local startZ = 0
    y = y + startZ
    local ys = 1.0-(y/(y+lay+580 + 100))
    y = y * ys
    x = (480+lax) + (x-(480+lax))*ys
    local scale =  ys
    return cc.p(x - 50,y),scale
end

return FightScene

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...