翻牌逻辑实现依靠接口轨道摄像机:
cc.OrbitCamera:create(duration, radius,deltaRadius,angleZ,deltaAngleZ,angleX,deltaAngleX)
参数:
duration: 动作持续时间
radius: 镜头距离图象中心的距离,称为半径
deltaRadius: 半径在持续时间内变化总量
angleZ: 动作开始时,镜头到图象中心的连线与z轴的夹角
deltaAngleZ: z角度的变化总量
angleX: x轴与y轴的初始倾斜角度
deltaAngleX: x轴的总变化角度
效果如下:
调整参数达到翻转效果,我们要做的翻牌其实就是使球坐标系φ角从0到360度
当φ角达到180度时将图片或者node换为正面
local function AniSpriteCallback_local()
self:createNewpaper()
end
local callback = CCCallFunc:create(AniSpriteCallback_local);
local actions2 = CCArray:create()
actions2:addObject(CCShow:create())
actions2:addObject(CCOrbitCamera:create(time/2, 1, 0, 0, -90, 0, 0)) --翻转180°
actions2:addObject(CCHide:create())
actions2:addObject(callback) --重新初始化牌的正面
actions2:addObject(CCShow:create())
actions2:addObject(CCOrbitCamera:create(time/2, 1, 0, 90, -90, 0, 0)) --180°到360°
self.paper:runAction(CCSequence:create(actions2));