2013-08-05 2 views
1

В моей игре два объекта сталкиваются друг с другом, но я хочу изменить угол объекта после столкновения с другим объектом. Я хочу, чтобы объект, чтобы изменить свое направление на 180 градусов после столкновения, я использовал физику столкновений, любую помощь или предложение .. спасибоКак изменить угол объекта после столкновения в короне sdk

ответ

1

Try, чтобы получить X, Y компоненты для линейной скорости тела с помощью:

vx, vy = myBody:getLinearVelocity() 

и сбросить его, как:

myBody:setLinearVelocity(-vx,-vy) 

Для получения дополнительной информации, посетите Corona - Physics Bodies.

Пример:

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

-- Create ground and bodies --- 
local ground = display.newImage("ground.png") 
ground.x = display.contentWidth/2 
ground.y = 445 
ground.myName = "ground" 

local crate1 = display.newCircle(0,0,30,30) 
crate1.x = 180; crate1.y = 350 
crate1.myName = "first crate" 

local crate2 = display.newCircle(0,0,30,30) 
crate2.x = 220; crate2.y = -50 
crate2.myName = "second crate" 

-- physics.setDrawMode("debug") -- Uncomment this line to see the physics shapes 

-- Adding physics -- 
physics.addBody(ground, "static", { friction=0.5, bounce=0.3 }) 
physics.addBody(crate1, { density=3.0, friction=0.5, bounce=0.3,radius = 30}) 
physics.addBody(crate2, { density=3.0, friction=0.5, bounce=0.3,radius = 30}) 

crate1:setLinearVelocity(0, -400) 

-- Collision function -- 
local function onGlobalCollision(event) 
    if (event.phase == "began") then 
    print(event.object1.myName .. " & " .. event.object2.myName .. " collision began") 
    vx_1, vy_1 = crate2:getLinearVelocity()  -- get the velocities of crate2 
    crate2:setLinearVelocity(-vx_1,-vy_1)  -- reset the velocities of crate2 

    vx_2, vy_2 = crate1:getLinearVelocity()  -- get the velocities of crate1 
    crate1:setLinearVelocity(-vx_2,-vy_2)  -- reset the velocities of crate1 
    end 
end 
Runtime:addEventListener("collision", onGlobalCollision) 

Keep Coding .............. :)

+0

Это did'nt решение работал для меня, я попробовал. Не могли бы вы рассказать мне, где включить этот код или дать ссылку для этого типа решения. В моем примере оба тела сталкиваются, поскольку они являются физическим телом, после столкновения другое тело движется в любом направлении, но я хочу, чтобы он переместился на 180 градусов, неважно, в какой части он столкнулся. – user2588337

+0

I ' ve обновил код с помощью небольшого образца ............. :) –

+0

Спасибо за помощь .. приведенный выше код работает для меня, но я хочу внести некоторые изменения, в этом примере оба шара перемещаются, но я хочу один статический, а другой будет двигаться и сталкиваться после столкновения, он изменит угол, и если я хочу, чтобы мяч переместился на угол 90 градусов, а не на 180 градусов, какие изменения я должен сделать в этом коде ... – user2588337

Смежные вопросы