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 轴上的两个方向射出的点开始,直到两端都碰到屏幕边缘。然后,Touch 2 将创建一个点,该点在 y 轴上向两个方向射出,直到下端碰到 Touch 1 创建的墙壁,上端碰到屏幕边缘。线条(缩放点)在用户触摸的地方生成。所以我不希望红色框突出显示的垂直线部分在那里。
向一个方向扩展只是我看到这个问题的一种解决方案,如果有更好的解决方法,我肯定会尝试其他解决方案。