https://gyazo.com/0952a960bd7f9e5c9c5e1fe71d0f0b45 Я хочу получить эффект перфорации, похожий на этот. что я в настоящее время получил
есть ли способ повторить это? и как это будет сделано? проблема с данным кодом, когда он достигает координат х. это становится очень худым. любая подсказка и как это будет исправлено?
Я проверяю, нажата ли кнопка влево. и если он нажимается, он вычисляет расстояние между мышью и областью, в которой он нажимается. и затем установите масштаб на абсолютное значение y.
, включая "quarks.h" - мой маленький каркас, который я создал.
это эффект, данный https://gyazo.com/fd46b85cd69d95d05d2a8e6f184c4e06
Надеюсь, кто-нибудь может мне помочь
#include "quarks.h"
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <SFML/Audio.hpp>
#include <cmath>
static constexpr float pi = 3.14159265359f;
static constexpr float to_degree(float radian)
{
return radian * (180.f / pi);
}
int main() {
QuarksSDK::CreateWindow window;
window.windowSettings(VideoMode(1000, 900), "Hello.", Style::Close);
float grid =64;
RectangleShape click(Vector2f(42, grid));
click.setPosition(window.getSize().x / 2, window.getSize().y / 2);
click.setOrigin({ std::round(click.getLocalBounds().width / 2.f), std::round(click.getLocalBounds().height / 2.f) });
Clock clock;
QuarksSDK::movement mov;
sf::Clock tickClock;
sf::Time timeSinceLastUpdate = sf::Time::Zero;
sf::Time duration = sf::Time::Zero;
sf::Time TimePerFrame = sf::seconds(1.f / 60.f);
QuarksAnimator::easeQuarks ease;
while (window.isWindowOpen()) {
window.pollEvents();
if (Mouse::isButtonPressed(Mouse::Left)) {
if (clock.getElapsedTime().asSeconds() < 1.f) {
Vector2f distance = Vector2f(click.getPosition().x - Mouse::getPosition(*window.window).x, click.getPosition().y - Mouse::getPosition(*window.window).y);
float angle = to_degree(atan2f(distance.y, distance.x));
click.setRotation(angle + 90);
click.setSize(Vector2f(grid, abs(distance.y)));
cout << angle << endl;
}
else {
click.setSize(Vector2f(grid, grid));
clock.restart();
}
}
else {
click.setSize(Vector2f(grid, grid));
}
mov.SmoothMovement(click);
window.clear();
window.draw(click);
window.display();
}
}```