SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Кручение вокруг точки разных фигур (Help me!)
В этой теме 6 ответов, 2 участника, последнее обновление medoed 6 года/лет, 11 мес. назад.
-
АвторСообщения
-
#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.Не проще ли будет взять текстуру с глазами и ртом и крутить её?
хорошо допустим я вырезал их в фотошопе и вставил в проект но как зацеклировать что бы оно двигалось постоянно
я понимаю что можно его крутить через setRotation(); я просто не понемаю как зацеклировать это действие?C++123456789101112131415float Rotation=0;while (window.isOpen()){...square.rotate(Rotation)Rotation+=0.05;//подбираешь число под нужную тебе скорость поворота...}спасибо огромное
я обрезал и осталось только сделать кручение не вокруг левой верхней точки , а в центре что бы вышел ефект колеса?
Вложения:
You must be logged in to view attached files.square.setOrigin(x,y)
x,y координаты середины твоего квадратаесли судить по вложению, то попробуй
square.setOrigin(66,66);
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.