gar*_*uan 0 chipmunk cocos2d-iphone
我正在使用chipmunk创建一个静态形状(使用SpaceManager)并将cpCCSprite附加到它上面.
但是,我需要精灵的锚点偏离中心,但是当我改变精灵的锚点时,形状和精灵不再对齐.
所以,如果我像这样改变锚点
[sprite setAnchorPoint:ccp(0.5, 0.3)];
Run Code Online (Sandbox Code Playgroud)
相应地绘制了精灵,但我预计形状会随之"移动".这是我的意思的图片.
大炮应该如何看待http://www.tomelders.com/bin/cannon.png
在左边是形状和精灵正确对齐.我没有改变锚点.
右边是具有锚点的精灵 ccp(0.5, 0.3)
我也在每一帧都重复静态形状.
这是它的创建方式
// create the sensor
sensor = [spaceMgr addRectAt:pPoint mass:STATIC_MASS width:53 height:81 rotation:0];
sensor->sensor = YES;
sensor->collision_type = 2;
//Create the sprite
CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"bownce-sprites-comic-sized.png"];
barrel = [[cpCCSprite node] initWithShape:sensor texture:texture rect:CGRectMake(3, 428, 53, 82)];
[self addChild:barrel];
// set the ancor point
[barrel setAnchorPoint:ccp(0.5, 0.3)];
[barrel setPosition:pPoint];
Run Code Online (Sandbox Code Playgroud)
这是对anchorPoints如何工作的常见误解.anchorPoint 与节点的位置无关.相反,它是节点对象纹理的偏移量!
默认的anchorPoint为0.5,0.5,这意味着纹理以节点的位置为中心.如果将anchorPoint设置为0,0,则纹理的左下角与节点的位置对齐.有效地,纹理向右和向上移动.但是节点的位置没有改变.
由于形状与节点的位置对齐,因此在更改anchorPoint时它不会移动.解决此问题的最简单方法是更改图像,例如通过仅使用透明颜色将其尺寸增加到一侧.我希望这是可以理解的.
| 归档时间: |
|
| 查看次数: |
4249 次 |
| 最近记录: |