gpt4 book ai didi

ios - 放大后将节点粘贴到 SkSpriteNode

转载 作者:行者123 更新时间:2023-11-29 12:28:15 25 4
gpt4 key购买 nike

问题

截至目前,我刚刚意识到我的应用程序中存在一个相当大的设计缺陷..

所以,问题是:

一枪开火,现在没有轨迹着陆,我正在考虑这个想法。但是,子弹落地后留下的痕迹是节点。

-(void)applyShot:(int) posX with:(int) posY {
SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);
[backgroundImage addChild:impact];
}

而 posX/posY 就是这样发送的。

//Find difference between centre and background moved distance.
CGPoint positionNow = CGPointMake(backgroundImage.position.x, backgroundImage.position.y);
CGPoint positionPrev = CGPointMake(0.5, 0.5);

float xdiff = positionNow.x - positionPrev.x;
float ydiff = positionNow.y - positionPrev.y;

//Calculate ydrop
int newYDrop = yDrop * 10;
//

CGPoint newPositionOne = CGPointMake(0.5 - xdiff, 0.5 - ydiff);
newPositionOne = CGPointMake((newPositionOne.x + [self myRandom:15 withFieldLower:-15]), (newPositionOne.y - newYDrop));

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(secondsDelay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^(void){
[self applyShot:newPositionOne.x with:newPositionOne.y];
});

这似乎工作正常,直到我开始玩弄缩放。

现在,这个应用程序基本上是一个 1080p 的标线图像,背景放大以提供(缩放)效果,然后触摸拖动/反转背景以提供标线移动效果。

然后我设法让它准确地射击十字准线所在的位置,这很好。然后我开始玩弄变焦并注意到了这一点。

enter image description here enter image description here

因此,如果不太容易注意到,(子弹击中)是灰色标记,但是,当您放大 backgroundImage 时,它​​们并没有绑定(bind)到它。所以它们保持相同的价差。

解决方案

现在我需要的是,

  • A:将节点绑定(bind)到背景图片
  • B:将点差放大到与放大倍数相同的倍数。

但我对如何实现这一点感到很困惑。

其他问题

在校准落差时,无论现在的变焦如何,落差仍然是一个负担。因此,如果在 6 倍变焦时有 1 密耳点下降,那么在 10 倍变焦或 1 倍变焦时也会有 1 密耳点下降(当我说放大时我一直在说缩放)

无论背景图像的放大倍数如何,我如何才能实现墨滴强度的校准?

感谢您阅读我的可怕问题并将您自己弄糊涂了,非常感谢!

我尝试过的

将子项保存到一个可变数组中,然后在缩放更改后重新创建它们;

//recreate children
[backgroundImage removeAllChildren];
for (int i=0; i < [shotsHitX count]; i++) {

double posX = ([shotsHitX[i] doubleValue] / 5) * rifleZoom;
double posY = ([shotsHitY[i] doubleValue] / 5) * rifleZoom;

SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);

[shotsHitX addObject:[NSNumber numberWithDouble:posX]];
[shotsHitY addObject:[NSNumber numberWithDouble:posY]];

[backgroundImage addChild:impact];
}
//end recreate children

因内存错误而崩溃。

不太擅长这个!

[backgroundImage removeAllChildren];
for (int i=0; i < [shotsHitX count]; i++) {

double posX = ([shotsHitX[i] doubleValue] / 5) * rifleZoom;
double posY = ([shotsHitY[i] doubleValue] / 5) * rifleZoom;

SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);

[backgroundImage addChild:impact];
}
//end recreate children

但是,现在看起来不太对..

我认为问题是当初始变焦进入时它起作用,然后当它恢复时它将阵列中的变焦镜头与旧镜头混合在一起。我们再来一次,更多阵列。。 p>

    //recreate children
[backgroundImage removeAllChildren];
for (int i=0; i < [shotsHitRem count]; i+= 2) {

double posX = ([shotsHitRem[i] doubleValue] / 5) * rifleZoom;
double posY = ([shotsHitRem[i+1] doubleValue] / 5) * rifleZoom;

SKSpriteNode *impact = [[SKSpriteNode alloc] initWithColor:[UIColor grayColor] size:CGSizeMake(2, 2)];
impact.zPosition = 1;
impact.userInteractionEnabled = NO;
impact.position = CGPointMake(posX , posY);
[backgroundImage addChild:impact];

//add olds m4
if ([shotsHitM4 count] > 0) {
posX = ([shotsHitM4[i] doubleValue] / 2) * rifleZoom;
posY = ([shotsHitM4[i+1] doubleValue] / 2) * rifleZoom;
impact.position = CGPointMake(posX, posY);
[backgroundImage addChild:impact];
}
}
//end recreate children

现在我在尝试添加一个已经有父节点的 sknode 时崩溃了

令人困惑,因为它应该在循环之前删除 AllChildren

最佳答案

经过一些重大的困惑之后

[backgroundImage setScale:rifleZoom];

编程是我的最爱,哦耶..五个小时,哦耶..一行,哦耶!

我之前没有缩放,我正在创建一个新的 cgsize。那是我的问题。

我现在遇到缩放问题并尝试渲染新的中心点,因为它仍然记得 scale = 1 和 scale = 2 的中心点,噩梦。

关于ios - 放大后将节点粘贴到 SkSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28444659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com