cocos2dx_lua sprite3D 尝试

这篇博客展示了如何使用cocos2dx_lua引擎添加背景图片并创建3D精灵。通过创建和设置精灵的3D位置、旋转、缩放以及运行动作,实现了3D对象在屏幕上的移动和旋转效果。同时,还添加了动态模型和3D动画,以及触摸事件监听,以响应用户的触摸操作。
摘要由CSDN通过智能技术生成

-- add background image
    local bg = display.newSprite("bg2.png")
    bg:move(display.center)
    bg:addTo(self)
    bg:setPosition3D(cc.Vertex3F(display.size.width/2,display.size.height/2,0))
    bg:setGlobalZOrder(-1)
    local size = display.size 

    local spobj = cc.Sprite3D:create("Sprite3DTest/boss.obj")
    spobj:setTexture("Sprite3DTest/boss.png")  
    spobj:setScale(5) 
    self:addChild(spobj)  
    spobj:setPosition3D(cc.Vertex3F(size.width/2,size.height/2-400,0)) 
    spobj:setRotation3D(cc.Vertex3F(-90,0,0))
    local a1 = cc.MoveTo:create(4,cc.Vertex3F(size.width/2,size.height/2+400,0))
    local a11 = cc.CallFunc:create(function() spobj:setRotation3D(cc.Vertex3F(90,0,0)) end)
    local a111 = cc.MoveTo:create(4,cc.Vertex3F(size.width/2,size.height/2-400,0))
    local a1111 = cc.CallFunc:create(function() spobj:se

下面是使用 Lua 实现 scrollView 的无限滚动的示例代码: ```lua local scrollView = ccui.ScrollView:create() scrollView:setDirection(ccui.ScrollViewDir.horizontal) scrollView:setContentSize(cc.size(600, 200)) scrollView:setInnerContainerSize(cc.size(1200, 200)) self:addChild(scrollView) -- 添加节点 for i = 1, 5 do local node = cc.LayerColor:create(cc.c4b(0, 255, 0, 255), 200, 200) node:setPosition((i - 1) * 200, 0) scrollView:addChild(node) end -- 添加节点的复制 local firstNode = scrollView:getChildren()[1] local lastNode = scrollView:getChildren()[5] local firstNodeCopy = firstNode:clone() firstNodeCopy:setPosition(lastNode:getPositionX() + 200, 0) scrollView:addChild(firstNodeCopy) local lastNodeCopy = lastNode:clone() lastNodeCopy:setPosition(firstNode:getPositionX() - 200, 0) scrollView:addChild(lastNodeCopy) -- scrollView 的回调函数 scrollView:addEventListener(function(sender, eventType) if eventType == ccui.ScrollviewEventType.containerMoved then local position = scrollView:getInnerContainerPosition() if position.x < -200 then local lastNode = scrollView:getChildren()[6] scrollView:setInnerContainerPosition(cc.p(lastNode:getPositionX() + 200, 0)) elseif position.x > 1000 then local firstNode = scrollView:getChildren()[2] scrollView:setInnerContainerPosition(cc.p(firstNode:getPositionX() - 200, 0)) end end end) ``` 这段代码实现的效果和前面提供的 C++ 代码一样,只不过是使用 Lua 语言编写的。需要注意的是,Lua 中的数组下标从 1 开始,而不是从 0 开始,所以在获取节点时需要将下标加 1。 另外,需要注意的是,如果在 C++ 中使用了 Lua,那么在使用 Lua 中的一些类时,需要用 ccui 前缀来代替在 C++ 中使用的 ui 前缀。例如,ccui.ScrollView:create() 代替 ui::ScrollView::create()。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值