2016-06-23 15 views
0

與原點(0,0)位於軸中心的常用數學軸相同,Swift中的原點(使用Sprite Kit)位於左下角如果我沒錯的話。因此,我需要計算一個完全相反的x,y在我觸及的精靈上,但是我還找不到方法,我不擅長數學。如何計算Swift中座標的反射2

在一個正常的座標軸上,它就像給出座標A(-7,8)一樣簡單,我要查找的數字是(7,-8)。但是,我怎麼能得到一個非零軸?凡有正面價值的地方。

爲了展示更好一點,我只是做了這樣的畫面:

enter image description here

外框邊界將是我的手機屏幕上,這將是我真正的起源0,0吧?

現在,想象一下,我只是點擊該框的座標(13,13)。盒子的高度和寬度是12px乘12px。 那個盒子的起源是(10,10)。

我想得到的一點是(19,19)。我怎樣才能做到這一點?謝謝。

回答

1

全部都是基礎數學。

首先。找到中心點:

centerPoint = (sprite.origin.x + sprite.width/2, sprite.origin.y + sprite.height/2)

二。找到反射點:

假設你觸摸touchPoint

則:

reflectPoint = (2 * centerPoint.x - touchePoint.x, 2 * centerPoint.y - touchePoint.y)

+0

感謝您的答覆。你知道我的觸摸點是否會touch.locationInNode(self)?我有一個讓位置= touch.locationInNode(self)。但是那個location.x和location.y看起來不像它的正確觸摸位置。因爲例如,我認爲是不正確的,location.x比sprite.position.x – msqar

+0

順便說一句,通過應用你告訴我的,它的工作原理,但只有一方面,如果這個數學也適用於右側?如果我觸摸左側,它應該給我的右上角座標,如果我觸摸正確,它應該給我左上角的點。 – msqar

+0

當然,它適用於雙方。關於位置,如果self表示SKScene,那麼它是正確的,如果self表示它自己的sprite,那麼你需要做一些額外的改變。 –