Я делаю игру для пинг-понга, используя SFML, и мяч является квадратом. Я посмотрел учебники, и по какой-то причине я не могу заставить мяч двигаться. Я использовал инструкции cout для проверки положения мяча, но он просто выводит исходное положение. Я подозреваю, что с моей математикой что-то не так ... но мяч должен двигаться.Перемещение мяча в SFML
void ball_traits(sf::RectangleShape ball, sf::RectangleShape leftPaddle)
{
double ballSpeed = 5;
int angle = 90;
//Scale X and Y will give the angle
double scaleX = cos(angle);
std::cout << scaleX << std::endl;
double scaleY = sin(angle);
double velocityX = scaleX * ballSpeed;
double velocityY = scaleY * ballSpeed;
//take original position
double moveX = ball.getPosition().x;
double moveY = ball.getPosition().y;
sf::Clock clock;
double elapsed = clock.restart().asSeconds();
moveX += velocityX * elapsed;
moveY += velocityY * elapsed;
std::cout << moveX << std::endl;
std::cout << moveY << std::endl;
ball.move(moveX, moveY);
}
Я просто хочу быть нажатой в правильном направлении. Это моя первая игра, и мои навыки на C++ немного ржавые. [Обновить] Я забыл передать объект по ссылке (лицевая ладонь).
Не уверен, что это единственная проблема, но функции C 'cos' и' sin' принимают радианы, а не градусы. –
При переполнении стека вы отмечаете ответ как принятый вместо редактирования названия вашего вопроса с помощью «Разрешено» :) – twsaef