キューブは6つのCALayerで構成されており、これらが1つのCATransformLayerに追加されます。このtransformLayer(およびそれとともにキューブ)は、タッチ入力を使用して回転可能です。
問題:ユーザーが立方体のどちら側に触れているかを認識できるようにしたい。
私はこのコードを試しました:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint location = [[touches anyObject] locationInView:self];
if ([self.side1 containsPoint: [self.layer convertPoint:location toLayer:self.side1]]) {
NSLog(@"Side 1");}
if ([self.side2 containsPoint: [self.layer convertPoint:location toLayer:self.side2]]) {
NSLog(@"Side 2"); }
if ([self.side3 containsPoint: [self.layer convertPoint:location toLayer:self.side3]]) {
NSLog(@"Side 3 "); }
if ([self.side4 containsPoint: [self.layer convertPoint:location toLayer:self.side4]]) {
NSLog(@"Side 4"); }
if ([self.side5 containsPoint: [self.layer convertPoint:location toLayer:self.side5]]) {
NSLog(@"Side 5"); }
if ([self.side6 containsPoint: [self.layer convertPoint:location toLayer:self.side6]]) {
NSLog(@"Side 6");
}
しかし、立方体は2D空間にマッピングされているようです。サイド1に触れると、サイド1だけでなく、その後ろのサイド(たとえば、サイド4)も認識されます。
ユーザーに近い側(z座標が高い側)のみが選択されていることを確認するにはどうすればよいですか?