我正在使用此代码移动我的对象
function myObject( event )
if event.phase == "began" then
monkey.markX = monkey.x -- store x location of object
-- monkey.markY = monkey.y -- store y location of object
elseif event.phase == "moved" then
local x = (event.x - event.xStart) + monkey.markX
-- local y = (event.y - event.yStart) + monkey.markY
if monkey.x <= screenLeft then
print("left")
monkey.x = 250
else
end
monkey.x = x -- move object based on calculations above
end
return true
end
问题是,使用此代码可以将字符拖离屏幕,我不希望这种情况发生。 关于如何阻止这种形式发生的代码的解释将不胜感激
答案 0 :(得分:1)
你犯了一个错误
local x = (event.x - event.xStart) + monkey.markX
if monkey.x <= screenLeft then
print("left")
monkey.x = 250
else
end
monkey.x = x
无论你有条件,你做的最后一件事是&#34; monkey.x = x&#34;尝试:
local offset = 0
local x = (event.x - event.xStart) + monkey.markX
if monkey.x <= screenLeft then
print("left")
monkey.x = screenLeft + offset
else
monkey.x = x
end
另外,你应该使用&#39; screenLeft&#39;而不是250.你有边界,保持一致。如果您希望它稍微反弹一下,那么您可以使用&#39;偏移&#39;
希望有所帮助
答案 1 :(得分:0)
你能做的就是让猴子成为一个动态的物理身体,然后将静态墙壁放在屏幕外面。理论上,这应该可以防止用户将猴子拖到给定空间之外。
你可以做的另一种方法是让运行时事件检查猴子是否在当前区域之外,将它们移动到另一个区域。
例如:
function(checkMonkey)
if monkey.x >= 0 then
monkey.x = a default number
end
--repeat that with x as 250 (or whatever the x height is), y as 0, as y as 400 (or what ever the y height is)
end --function ends the checkMonkey function
运行时:addEventListener(&#34; enterFrame&#34 ;, checkMonkey)
&#39;希望代码有所帮助。无论哪种方式都可行,但它们可能需要进行一些调整才能在您的应用中运行