0

画面に 3 つのボタンがあり、ストーリーボードに背景画像が設定されています。背景画像は六角形です。現在、重力をいじっています。ボタンを押すと、すべてが画面の下部に落ちます。ボタンが長方形ではなく、互いに跳ね返ったときに六角形のように反応するようにしたいと思います。

UIButtons.frame をhexagonal.png にクリップする方法はありますか?

- (IBAction)home:(id)sender {

    animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
    gravity = [[UIGravityBehavior alloc] initWithItems:@[self.youtuberLyr, self.gameLyr, self.homeLyr]];
    [animator addBehavior:gravity];

    collision = [[UICollisionBehavior alloc] initWithItems:@[self.youtuberLyr, self.gameLyr, self.homeLyr]];
    collision.translatesReferenceBoundsIntoBoundary = YES;
    [animator addBehavior:collision];

    barrier = [[UIView alloc] initWithFrame:CGRectMake(0, 1024, 768, 0)];
    barrier.backgroundColor = [UIColor redColor];
    [self.view addSubview:barrier];

    CGPoint rightEdge = CGPointMake(barrier.frame.origin.x + barrier.frame.size.width, barrier.frame.origin.y);
    [collision addBoundaryWithIdentifier:@"barrier" fromPoint:barrier.frame.origin toPoint:rightEdge];
}

私は無駄にグーグルを試みました。どんな助けでも大歓迎です。

4

1 に答える 1

0

UIKit Dynamics は、このプロトコルで定義されている四角形のみをサポートします。

@protocol UIDynamicItem <NSObject>
@property (nonatomic, readwrite) CGPoint center;
@property (nonatomic, readonly) CGRect bounds;
@property (nonatomic, readwrite) CGAffineTransform transform;    
@end

たぶん、SpriteKitSKPhysicsBodyがあなたのケースでうまくいくでしょう。具体的には、この初期化子に六角形のパスを渡すことによって。

+ (SKPhysicsBody *)bodyWithPolygonFromPath:(CGPathRef)path
于 2014-02-07T16:51:47.067 に答える