Как заставить объект расти в одном направлении с помощью SpriteKit?
В конечном счете, я хотел бы, чтобы узел был вставлен в то место, где пользователь касается, и чтобы каждый конец линии масштабировался до тех пор, пока он не коснется другого объекта в той же категории или не достигнет края экрана. Я понимаю, как масштабировать его по оси, и затем я могу отменить масштабирование после обнаружения одного столкновения, но я хочу, чтобы оба направления масштабировались независимо, пока для каждого не произойдет столкновение. Я новичок в SpriteKit, поэтому в моих поисках могут использоваться неправильные термины, но я не смог найти ничего подходящего.
Код для добавления «стены», к которой прикасается пользователь
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch * touch in touches) {
CGPoint location = [touch locationInNode:self];
[self addWallAtLocation:location];
}
}
-(void)addWallAtLocation:(CGPoint)location{
int odd_or_even = arc4random() % 2;
SKSpriteNode * wall = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(2, 2)];
wall.position = location;
wall.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(2, 2)];
wall.physicsBody.dynamic = NO;
wall.physicsBody.categoryBitMask = wallCategory;
wall.physicsBody.contactTestBitMask = ballCategory;
[self addChild:wall];
SKAction * grow;
if (odd_or_even == 1) {
grow = [SKAction scaleYTo:300 duration:2];
} else {
grow = [SKAction scaleXTo:300 duration:2];
}
[wall runAction:grow];
}
Как я хочу, чтобы это работало: Touch 1 создает горизонтальную линию из точки, которая расходится в обоих направлениях по оси X, пока оба конца не коснутся края экрана. Прикосновение 2 создаст точку, которая расходится в обоих направлениях по оси Y до тех пор, пока нижний конец не коснется стены, созданной Прикосновением 1, а верхний конец не коснется края экрана. Линии (масштабированные точки) генерируются там, где пользователь касается. Поэтому я не хочу, чтобы часть вертикальной линии, выделенная красным прямоугольником, была там.
Масштабирование в одном направлении - это просто решение, которое я вижу для этой проблемы, и если есть лучший способ сделать это, я обязательно попробую это другое решение.