I’ve tried to cancel the transition on collision, but this does not seem to work.
See my code below;
_W = display.contentWidth;
_H = display.contentHeight;
local physics = require(“physics”);
physics.start();
physics.setDrawMode(“hybrid”);
local player = display.newCircle(50, 100, 20);
player:setFillColor(10, 50, 255);
local floor = display.newRect(0,0, _W, 1);
floor:setReferencePoint(display.CenterReferencePoint);
floor.x = _W/2;
floor.y = _H - 20;
floor.type = “ground”;
local block = display.newRect(10, 20, 50, 50);
block.type = “wall”;
block:setFillColor(255, 255, 255);
block:setReferencePoint(display.CenterReferencePoint);
block.x = 200;
block.y = _H - 50;
physics.addBody(floor, “static”, {bounce=0.2});
physics.addBody(block, “static”);
physics.addBody(player, {density=1.0, friction=1.0, radius=20});
debugText = display.newText(“waiting for collision”, 0, 0, native.SystemFont, 20);
debugText.x = 100;
debugText.y = 50;
–Move player object to ‘event.x’ location
local function onTouch(event)
trans = transition.to(player, {time=700, x = event.x});
end
function player:collision(e)
if(e.phase == “began”) then
if(e.other.type == “wall”) then
transition.cancel(trans);
debugText.text = “collided with wall”
end
elseif(e.phase == “ended”) then
debugText.text = “waiting for collision”;
end
end
player:addEventListener(“collision”, player);
Runtime:addEventListener(“touch”, onTouch)
[import]uid: 59249 topic_id: 22004 reply_id: 87644[/import]