2010-05-18 170 views
2

有一些遊戲有一些小圖片作爲精靈,可以通過觸摸移動。如果精靈是一個較大的圖片,觸摸是非常正常的。我們可以使用函數CGRectContainsPoint檢查精靈。但當精靈很小時,這個函數看起來不太好。還有其他方法可以解決這個問題嗎?小精靈觸摸

+0

嗯,可能需要用戶使用手寫筆,而不是一個大胖乎乎的手指,而不是一個精美的尖端? – FrustratedWithFormsDesigner 2010-05-18 14:44:55

回答

1

我寫了一個辦法,你可以使用,以減輕其@FrustratedWithFormsDesigner描述的「胖手指」的問題:
http://codecube.net/2010/03/approximating-touch-points/

...如果你比較一下用戶的 觸摸點對實體 的頭寸和簡單地選擇 最接近的一個(無論是否 它是35或36像素)?

這篇文章是用C#編寫的windows phone,但這個概念應該適用。基本上,在用戶的觸摸和屏幕上的實體之間進行距離比較。使觸摸按距離操縱最近的那個,並且避免使用剛性定義的正方形來檢測觸摸。

+0

這是一個很好的方法,不僅因爲它可以讓你觸摸小精靈,而且它可以在一個小區域內對幾個小精靈進行消歧(即選擇最接近的小精靈)。你仍然可能想要限制你看起來的距離;選擇一個距離250像素的精靈會讓你的應用感到奇怪。 – 2010-07-13 18:50:22

0

您可以允許在精靈周圍的空白處進行觸控。例如如果觸摸位於精靈的10個像素內,請將其視爲正在觸摸精靈。

這樣做的一種方法是在調用CGRectContainsPoint之前展開精靈的矩形。下面的代碼將通過10 x和y擴大矩形:

CGRect expanded = CGRectInset(spriteRect, -10.0, -10.0); 

這樣做是創建一個圍繞觸摸一個矩形,並使用CGRectIntersectsRect檢查觸摸RECT與精靈重疊的另一種方式。