Кручение вокруг точки разных фигур (Help me!)

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Кручение вокруг точки разных фигур (Help me!)

В этой теме 6 ответов, 2 участника, последнее обновление  medoed 5 мес., 3 нед. назад.

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Автор
    Сообщения
  • #3869

    Artem Moskalik
    Участник
    Сообщений:13

    Зарегистрирован:
    06.06.2016

    Репутация:1

    #include <SFML/Graphics.hpp>
    #include <stdio.h>
    #include <time.h>

    using namespace sf;

    int main()
    {
    srand(time(NULL));

    sf::RenderWindow window(sf::VideoMode(400, 400), “SUN”);

    RectangleShape rectamble(Vector2f(500000, 500000));
    rectamble.setFillColor(Color(255, 165, 0));

    sf::ConvexShape convex;
    convex.setFillColor(sf::Color::Yellow);
    convex.setPointCount(8);
    convex.setPoint(0, sf::Vector2f(142, 82));
    convex.setPoint(1, sf::Vector2f(260, 82));
    convex.setPoint(2, sf::Vector2f(320, 140));
    convex.setPoint(3, sf::Vector2f(320, 250));
    convex.setPoint(4, sf::Vector2f(262, 310));
    convex.setPoint(5, sf::Vector2f(154, 310));
    convex.setPoint(6, sf::Vector2f(100, 250));
    convex.setPoint(7, sf::Vector2f(100, 150));

    RectangleShape line(Vector2f(150, 10));
    line.rotate(45);
    line.setPosition(40, 20);
    line.setFillColor(Color::Yellow);

    RectangleShape line2(Vector2f(150, 10));
    line2.rotate(67);
    line2.setPosition(165, 10);
    line2.setFillColor(Color::Yellow);

    RectangleShape line3(Vector2f(150, 10));
    line3.rotate(95);
    line3.setPosition(240, 10);
    line3.setFillColor(Color::Yellow);

    RectangleShape line4(Vector2f(150, 10));
    line4.rotate(120);
    line4.setPosition(330, 20);
    line4.setFillColor(Color::Yellow);

    RectangleShape line5(Vector2f(150, 10));
    line5.rotate(167);
    line5.setPosition(390, 130);
    line5.setFillColor(Color::Yellow);

    RectangleShape line6(Vector2f(150, 10));
    line6.rotate(200);
    line6.setPosition(400, 250);
    line6.setFillColor(Color::Yellow);

    RectangleShape line7(Vector2f(150, 10));
    line7.rotate(230);
    line7.setPosition(350, 350);
    line7.setFillColor(Color::Yellow);

    RectangleShape line8(Vector2f(150, 10));
    line8.rotate(260);
    line8.setPosition(240, 390);
    line8.setFillColor(Color::Yellow);

    RectangleShape line9(Vector2f(150, 10));
    line9.rotate(290);
    line9.setPosition(140, 390);
    line9.setFillColor(Color::Yellow);

    RectangleShape line10(Vector2f(150, 10));
    line10.rotate(320);
    line10.setPosition(50, 350);
    line10.setFillColor(Color::Yellow);

    RectangleShape line11(Vector2f(150, 10));
    line11.rotate(350);
    line11.setPosition(10, 250);
    line11.setFillColor(Color::Yellow);

    RectangleShape line12(Vector2f(150, 10));
    line12.rotate(380);
    line12.setPosition(10, 130);
    line12.setFillColor(Color::Yellow);

    CircleShape square(10, 4);
    square.setFillColor(Color(0, 150, 0));
    square.setPosition(170, 150);

    CircleShape square2(10, 4);
    square2.setFillColor(Color(0, 150, 0));
    square2.setPosition(240, 150);

    sf::ConvexShape convex2;
    convex2.setFillColor(sf::Color::Red);
    convex2.setPointCount(3);
    convex2.setPoint(0, sf::Vector2f(170, 240));
    convex2.setPoint(1, sf::Vector2f(260, 240));
    convex2.setPoint(2, sf::Vector2f(215, 260));

    while (window.isOpen())
    {

    sf::Event event;
    while (window.pollEvent(event))
    {
    if (event.type == sf::Event::Closed)
    window.close();
    }

    window.clear();
    window.draw(rectamble);
    window.draw(convex);
    window.draw(line);
    window.draw(line2);
    window.draw(line3);
    window.draw(line4);
    window.draw(line5);
    window.draw(line6);
    window.draw(line7);
    window.draw(line8);
    window.draw(line9);
    window.draw(line10);
    window.draw(line11);
    window.draw(line12);
    window.draw(square);
    window.draw(square2);
    window.draw(convex2);
    window.display();

    }

    return 0;
    }
    если кому не сложно объясните мне пожалуйста, мне нужно понять как можно крутить постоянно вокруг этой точки глаза и рот!

    Вложения:
    You must be logged in to view attached files.
    #3871
    +1

    medoed
    Участник
    Сообщений:5

    Зарегистрирован:
    10.05.2016

    Репутация:7

    Не проще ли будет взять текстуру с глазами и ртом и крутить её?

    #3872

    Artem Moskalik
    Участник
    Сообщений:13

    Зарегистрирован:
    06.06.2016

    Репутация:1

    хорошо допустим я вырезал их в фотошопе и вставил в проект но как зацеклировать что бы оно двигалось постоянно
    я понимаю что можно его крутить через setRotation(); я просто не понемаю как зацеклировать это действие?

    #3873
    +1

    medoed
    Участник
    Сообщений:5

    Зарегистрирован:
    10.05.2016

    Репутация:7

     

    #3874

    Artem Moskalik
    Участник
    Сообщений:13

    Зарегистрирован:
    06.06.2016

    Репутация:1

    спасибо огромное

    #3875

    Artem Moskalik
    Участник
    Сообщений:13

    Зарегистрирован:
    06.06.2016

    Репутация:1

    я обрезал и осталось только сделать кручение не вокруг левой верхней точки , а в центре что бы вышел ефект колеса?

    Вложения:
    You must be logged in to view attached files.
    #3877
    +1

    medoed
    Участник
    Сообщений:5

    Зарегистрирован:
    10.05.2016

    Репутация:7

    square.setOrigin(x,y)
    x,y координаты середины твоего квадрата

    если судить по вложению, то попробуй

    square.setOrigin(66,66);

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)

Для ответа в этой теме необходимо авторизоваться.