我试图让演员跟随玩家的手指(长时间触摸)。我很肯定我的数学是正确的,但演员无法准确地移动到玩家所触及的位置。
以下是我的问题的说明:
当触摸靠近顶部时,演员超出顶部的可见场景。 当触摸靠近底部时,演员离开底部的可见场景。 左右相同。
当在场景中间执行触摸时,演员完美地移动到触摸。简而言之,触摸远离中间越远,演员与触摸之间的距离越明显。换一种说法;触摸越接近中间,演员越接触触摸。
请注意,当触摸接近底部或顶部时,触摸和演员之间的距离更明显,然后触摸是在右侧或左侧;因为上/下距离中点更远。
以下是用于跟随演员触摸的代码:
郎:卢娜 Lib:Cocosd2-x 3.1local velocity = 1.4
local x, y = self.sprite:getPosition()
-- self.dest[X/Y] are cached coordinates to where the actor should move next.
local angle = math.atan2(touch.y - y, touch.x - x)
local deltaX = velocity * math.cos(angle)
local deltaY = velocity * math.sin(angle)
local newX = x + deltaX
local newY = y + deltaY
self.sprite:setPositionX(newX)
self.sprite:setPositionY(newY)
我尝试过的事情:
答案 0 :(得分:0)
发现了这个问题。当我创建Actor精灵时,我将其z-index设置为100.当我取消注释设置z-index的调用时,一切都运行良好。在我的情况下,这个特殊的精灵必须始终高于所有其他精灵。我为解决这个问题所做的是将z-index设置得比我最初设置的低得多;结果是15岁。
sprite:setPositionZ(15)
根据我的观察,似乎精灵在其位置上应用了某种类型的比例,z-index是精灵中的较大者。
更新1
使用:setPositionZ(int)在某些情况下会不必要地扩展你的精灵。我现在使用:setGlobalZOrder(int)取得了更好的成功:
sprite:setGlobalZOrder(15)