2017-12-02 182 views
0

我有一個非常簡單的應用程序。我有從天而降的廣場,這是物理實體。當用戶點擊一個正方形時,它會跳起來。他需要防止水果接觸地面。基於Swift中的觸摸正確地移動Sprite

現在我想,當觸摸蘋果時,只需移動它的position.y += 10。但我希望蘋果能夠在不同的x方向上跳起來,我不知道如何實現這一點。

例如,當我觸摸廣場的左下角時,它不僅應該跳起來,而且還應該向右跳。

任何想法如何實現這個移動到迅速?

+0

檢查此答案,並讓我知道https://stackoverflow.com/questions/38016756/swift-spritekit-rotate-sprite-in-the-direction-of-touch/38017316#38017316 –

+0

謝謝你,但不是我正在尋找。我試圖「踢」spirte節點,就好像你會耍一個足球一樣。 –

回答

3

由於您已經擁有PhysicsBodies,因此您可以使用applyImpulse(_:,at:)在觸摸時將「凹凸」應用於對象。將矢量設置爲向上,將位置設置爲觸摸位置(在對象的座標中)。

或者,對於更多控制,請使用applyImpulse(_:),根據觸摸的X位置將衝動向量設置爲大致向上,並向左或向右偏移,以使其向左或向右推動您正在尋找的位置。那麼爲了增加真實感,你可以在applyAngularImpulse(_:)的同時給它一些旋轉。

+0

不完全是我在找的東西。想象一下我有一個球。當你正好在中間觸摸它時,它會直線上升。但是當你在左下角觸摸它時,它會稍微撞到右側,因爲你在左下角「踢」它。使用applyImpulse幫助碰撞,但只是直線上升。我想避免僅僅使用偏向左側或右側的'dy:',因爲它會根據你觸摸的底角跳到一側。但非常感謝你的負擔先生。 –

+0

@JushKillaB你沒有正確使用applyimpulse。使用atan2來計算你正在接觸的點和球的中心之間的角度,然後使用矢量= x:m * cos(角度),y:m * sin(角度)(假設0度位於右邊部分的x軸)其中m是你的力量的大小 – Knight0fDragon