jus*_*ike 6 objective-c ios sprite-kit
我试图在y轴上拖动一个精灵,但是根据触点在节点上的开始位置,使精灵"粘住"到用户手指.精灵当前正在拖动,但似乎是将精灵的锚点捕捉到节点内的触摸位置.
我假设它与通过这样做获取节点内的位置有关,[touch locationInNode:selectedNode];但我不确定从那里去哪里.
这是我目前的代码.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
CGPoint newPosition = CGPointMake(node.position.x, location.y);
if ([node.name isEqualToString:self.selectedNode] ) {
if (newPosition.y > 230) {
newPosition.y = 230;
}
node.position = newPosition;
}
}
}
Run Code Online (Sandbox Code Playgroud)
您需要根据节点上当前的触摸位置偏移 newPosition。
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches)
{
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
if ([node.name isEqualToString:self.selectedNode] )
{
CGPoint previousLocation = [touch previousLocationInNode:self];
float diff = location.y - previousLocation.y;
CGPoint newPosition = CGPointMake(node.position.x, node.position.y + diff);
if (newPosition.y > 230) {
newPosition.y = 230;
}
node.position = newPosition;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |