0

円のボディ/形状を作成し、それを UIImage にフックしようとしています。これは、透明な背景を持つ .png で、サイズが 60 x 60px の単純な円です。

私はそれを行うために以下のコードを使用していますが、正常に動作していますが、円の画像の周りに目に見えない大きな領域があるようです (つまり、円の画像の側面は、円の本体などの他のオブジェクトに触れることができません)。半径などのすべての測定で60pxを使用しているため、なぜこれが起こっているのかわかりません.コードは以下のとおりです。

- (void) createCircleAtLocation: (CGPoint) location
{
    _button1 = [[UIButton alloc] init];
    _button1 = [UIButton buttonWithType: UIButtonTypeCustom];
    [_button1 setImage: [UIImage imageNamed: @"ball.png"] forState: UIControlStateNormal];
    _button1.bounds = CGRectMake(location.x, location.y, 60, 60);
    [self.view addSubview: _button1];

    float mass = 1.0;
    body1 = cpBodyNew(mass, cpMomentForCircle(mass, 60.0, 0.0, cpvzero));
    body1 -> p = location; // Center of gravity for the body
    cpSpaceAddBody(space, body1); // Add body to space

    cpShape *shape = cpCircleShapeNew(body1, 60.0, cpvzero);
    shape -> e = 0.8; // Set its elasticity
    shape -> u = 1.0; // And its friction
    cpSpaceAddShape(space, shape); // And add it.
}
4

1 に答える 1

1

この場合、「見えない領域」はシェイプです。形状はその半径によって定義されます。60x60 の画像がある場合、半径は 60 ではなく 30 です。シェイプとボディを新しい半径で更新すると、正常に動作するはずです。

- (void) createCircleAtLocation: (CGPoint) location
{
    _button1 = [[UIButton alloc] init];
    _button1 = [UIButton buttonWithType: UIButtonTypeCustom];
    [_button1 setImage: [UIImage imageNamed: @"ball.png"] forState: UIControlStateNormal];
    _button1.bounds = CGRectMake(location.x, location.y, 60, 60);
    [self.view addSubview: _button1];

    float mass = 1.0;
    body1 = cpBodyNew(mass, cpMomentForCircle(mass, 30.0, 0.0, cpvzero));
    body1 -> p = location; // Center of gravity for the body
    cpSpaceAddBody(space, body1); // Add body to space

    cpShape *shape = cpCircleShapeNew(body1, 30.0, cpvzero);
    shape -> e = 0.8; // Set its elasticity
    shape -> u = 1.0; // And its friction
    cpSpaceAddShape(space, shape); // And add it.

}

于 2013-01-09T17:40:23.837 に答える