冠状病毒+碰撞失效。
2017-1-2 7:49:42
收藏:0
阅读:115
评论:1
我正在学习 Corona 并尝试使用碰撞事件。以下程序的目标是:rock 使用 transition.to 向 car 移动,并打印一行来报告碰撞的位置。
然而,它不起作用。此外,我甚至不能接收消息 "enterenter",为什么程序甚至不能进入 enter 函数呢?
我的代码如下。先谢谢您。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
使用本地和全局(运行时)侦听器的工作代码:
local widget = require "widget" local composer = require( "composer" ) local scene = composer.newScene() local physics = require "physics" physics.start() physics.setGravity( 0,0 ) local function onGlobalCollision( event ) local target = event.object1 local other = event.object2 if ( event.phase == "began" ) then print( "GLOBAL: " .. target.name .. ": collision began with " .. other.name ) elseif ( event.phase == "ended" ) then print( "GLOBAL: " .. target.name .. ": collision ended with " .. other.name ) end end local function onLocalCollision( event ) local target = event.target local other = event.other if ( event.phase == "began" ) then print( "LOCAL: " .. other.name .. ": collision began with " .. target.name ) elseif ( event.phase == "ended" ) then print( "LOCAL: " .. other.name .. ": collision ended with " .. target.name ) end end function scene:create( event ) print("scene:create") local sceneGroup = self.view local car = display.newRect( 100, 100, 100, 100 ) car.name = "car" physics.addBody( car ) local rock = display.newRect( 250, 250, 100, 100 ) rock.name = "rock" rock:setFillColor( 0.5, 0.5, 0.5 ) physics.addBody( rock ) rock:addEventListener( "collision", onLocalCollision ) sceneGroup:insert(car) sceneGroup:insert(rock) transition.to(rock,{time=4000, x = -40, y = -100}) Runtime:addEventListener( "collision", onGlobalCollision ) end function scene:show( event ) if ( event.phase == "will" ) then print("scene:show") elseif ( event.phase == "did" ) then print("scene:show did") end end scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) return scene您的代码问题是两个物体都是静态的,两个静态物体无法彼此碰撞,而且在composer中没有叫做
scene:enter的东西(因此它不会被调用,因此也不会有onLocalListener)。https://docs.coronalabs.com/daily/guide/physics/collisionDetection/index.html
这里是有关Composer API的一些信息,您将发现您应该使用
scene:show:https://coronalabs.com/blog/2014/01/21/introducing-the-composer-api-plus-tutorial/