gpt4 book ai didi

iphone - 使用 SpriteKit 驱动计算

转载 作者:行者123 更新时间:2023-11-29 03:36:41 28 4
gpt4 key购买 nike

我有一个瓦片 map (Kobald Kit 的 KKTilemapNode)和中间的一个角色,现在我使用操纵杆上下移动瓦片 map 并计算速度,我遇到的问题是,如果我向左转动角色,它就会消失仍然只是上下,因为我不知道如何计算角度下的新位置。我尝试移植一些 Flash 示例,但我发现的示例没有图 block map :(

编辑(添加源):

rotationStep = (_velocity.x / 20); // Rotate the car by

if (fabs(_speed) > 0.3) {
_carRotation -= (rotationStep * (_speed / maxSpeed)); // Rotation angle if speed is at least 0.3
}

CGFloat speedX = ((_carRotation * (M_PI / 180)) * _speed); // Calculation stolen from the flash game and probably changed over tooo much
CGFloat speedY = ((_carRotation * (M_PI / 180)) * _speed);

CGFloat rotationValue = (degreesToRadians(_carRotation)); // Getting radians for the rotation

if (_velocity.x != 0 || _velocity.y != 0) {
_car.zRotation = rotationValue; // Setting correct rotation
}

NSLog(@"Speed X: %f - Y: %f", speedX, speedY); // Getting probably very incorrect values

[_track setPosition:CGPointMake(5, (_track.position.y - _speed))]; // And moving the tile map just up and down in the end based on a speed I have calculated earlier

最佳答案

一种计算角度的方法:

float angle = atan2f (touchY - joystickY, touchX - joystickX);

其中 touchY 和 touchX 是玩家触摸操纵杆的坐标JoystickY 和 JoystickX 是操纵杆的坐标。要使用 SKAction 将节点移动该角度(您可能不想使用操作,但您仍然可以使用数学来计算目标坐标):

SKAction *moveWhatever = [SKAction moveByX: yourDistance*cosf(angle) y:yourDistance*sinf(angle) duration:yourDuration];
[node runAction: moveWhatever];

您设置距离和持续时间的位置。

关于iphone - 使用 SpriteKit 驱动计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083912/

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