Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 科罗纳+;碰撞不起作用_Lua_Collision Detection_Coronasdk - Fatal编程技术网

Lua 科罗纳+;碰撞不起作用

Lua 科罗纳+;碰撞不起作用,lua,collision-detection,coronasdk,Lua,Collision Detection,Coronasdk,我正在学习电晕,我正在尝试使用碰撞事件。 以下程序的目标是使用transition.to使岩石向汽车移动。并打印一行以报告发生碰撞的位置 但是,它不起作用。此外,我甚至无法收到“enterenter”消息,是什么原因导致程序无法进入enter功能 我的代码如下。先谢谢你 local composer = require( "composer" ) local scene = composer.newScene() local physics = require "physics" physi

我正在学习电晕,我正在尝试使用碰撞事件。 以下程序的目标是使用transition.to使岩石向汽车移动。并打印一行以报告发生碰撞的位置

但是,它不起作用。此外,我甚至无法收到“enterenter”消息,是什么原因导致程序无法进入enter功能

我的代码如下。先谢谢你

local composer = require( "composer" )
local scene = composer.newScene()


local physics = require "physics"
physics.start(); physics.pause()

local function onLocalCollision( self, event )

if ( event.phase == "began" ) then
    print( self.myName .. ": collision began with " .. event.other.myName )

elseif ( event.phase == "ended" ) then
    print( self.myName .. ": collision ended with " .. event.other.myName )
end
end


local widget = require "widget"

function scene:create( event )
print("entercreate")
local sceneGroup = self.view

local backgrd = display.newImage("background2.png",0,260)
backgrd:scale(3,3)
local car = display.newImage("car2.png",80,270)
physics.addBody(car,"static")
car.myName="Car"

local rock = display.newImage("rock.jpg",520,280)
rock:scale(0.05,0.05)
physics.addBody(rock,"static")
rock.myName="rock"


sceneGroup:insert(backgrd)
sceneGroup:insert(car)
sceneGroup:insert(rock)
transition.to(backgrd,{time=24000, x=-1800,onComplete=endScroll})
transition.to(rock,{time=4000, delay=2500,x=-40})
end

function scene:enter( event )
print("enterenter")
physics.start()
local sceneGroup = self.view
Runtime:addEventListener( "collision", onLocalCollision )
end



scene:addEventListener( "create", scene )
scene:addEventListener( "enter", scene )


return scene

使用本地和全局(运行时)侦听器的工作代码:

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:enter( event )
    print("scene:enter")    
    local sceneGroup = self.view

end

scene:addEventListener( "create", scene )
scene:addEventListener( "enter", scene )


return scene
代码的问题是两个实体是静态的,两个静态实体不能相互碰撞,而且在composer中没有所谓的
场景:输入
(这就是为什么它不会被调用,因此不会调用
onLocalListener

某些实体类型会或不会与其他实体类型发生碰撞。在里面 两个物理对象(至少一个对象)之间的碰撞 必须是动态的,因为这是唯一与 任何其他类型。有关实体的详细信息,请参见《物理实体指南》 类型

以下是有关Composer API的一些信息,您将看到您可能应该使用
场景:show

使用本地和全局(运行时)侦听器的工作代码:

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:enter( event )
    print("scene:enter")    
    local sceneGroup = self.view

end

scene:addEventListener( "create", scene )
scene:addEventListener( "enter", scene )


return scene
代码的问题是两个实体是静态的,两个静态实体不能相互碰撞,而且在composer中没有所谓的
场景:输入
(这就是为什么它不会被调用,因此不会调用
onLocalListener

某些实体类型会或不会与其他实体类型发生碰撞。在里面 两个物理对象(至少一个对象)之间的碰撞 必须是动态的,因为这是唯一与 任何其他类型。有关实体的详细信息,请参见《物理实体指南》 类型

以下是有关Composer API的一些信息,您将看到您可能应该使用
场景:show