SFML - 시작
- sfml 그리기는 2가지 부류가 있다.
- 텍스쳐 (리소스) : 이미지, 사운드 등의 정보 저장
- 스프라이트 : 리소스 정보를 받아서 사용 및 활용
- 그리기 순서
- 위에서 아래로 진행하기에 위에있는 코드가 먼저 그려진다.
- position, origin, scale이 3가지가 이미지를 그리기 위해 필요한 것들이다.
- main 함수에서 하는것은 update와 draw다.
- 이게 한프레임이다.
- 드로우 : 세팅되어있는 값 그리기
- 업데이트 : 변경해야 할 값 수정
월드 좌표계
- 화면의 수치를 표현하려면 기준이 있어야한다.
- 2차원 좌표 평면의 방향 표현 : X Y
- SFML의 기준 좌표 : 좌측 상단이 (0, 0)이다.
- 오른쪽 : X+
- 아래 : Y+
- 우측 하단 : (1919, 1079) - 0, 0으로 시작해서이다.
로컬 좌표계
- 해당 객체 자체가 기준이 되는 좌표계다.
- 배경위에 놓인 캐릭터의 그림 좌측 상단이 (0, 0)이다.
- 피봇(오리진) : 기준점 - (0, 0)
- 피봇을 이미지의 중앙으로 옮긴다면? : 중앙이 (0, 0)이 된다.
구조체
- struct가 있다면 해당 코드블럭은 그 구조체의 ‘선언부’가 된다.
- 코드블럭 : 구조체의 멤버들을 정의한다.
- 선언한 구조체는 데이터 형처럼 ‘객체’를 선언할 수 있다.
- 선언한 객체 변수에는 구조체에 정의한 멤버 변수 및 함수를 사용할 수 있다.
- 구조체의 멤버변수는 구조체의 객체가 선언될때 메모리에 올라간다.
- 같은 구조체의 변수를 생성하더라도 각각의 객체의 멤버 변수는 서로 고유한 변수가 된다.
난수
- 랜덤한 숫자를 의미한다.
- 프레임 : 프로그램 흐름이 1번 주기가 진행된 시간
- 60프레임 ; 1초에 60번 코드가 반복되는 것이다.
- 컴퓨터의 성능과 상관없이 동일한 프레임이 나오려면 단위 시간을 맞춰야한다.
- (float)rand() / RAND_MAX로 하면 0.0 ~ 1.0 즉, 실수값이 나온다.
#include <ctime> - 시간 관련 헤더파일
#include <cstdlib> - 난수 관련 헤더파일
float random = (float)rand() / RAND_MAX;
배열의 랜덤출력
- 배열은 선언과 초기화가 지나면 사이즈가 정해져있다.
- 사이즈는 나머지 연산의 수, 초기 인덱스는 +- 첫번쨰 인덱스를 넣으면 된다.
- 1 ~ 6의 배열
- rand() % 6 + 1 ⇒ 1번요소 ~ 5번요소까지 랜덤 출력된다.
- 시드값 : 랜덤한 값이 동일한 랜덤 숫자가 나오도록 지정하는 값이다.
deltaTime
- 프레임간의 시간 차
- 첫 프로그램 시작 시간과 다음 반복되는 프로그램 시작 시간의 차다.
- 이걸 곱하면 각 컴퓨터의 성능 차 없이 프레임이 동일해진다.
등속도 운동
- 속도 ⇒ v = d(거리) / t(시간)
- 거리는 픽셀로 계산한다.
- 100 = 1초에 100픽셀 이동
- v * t = d
- 속도는 직접 지정하고, 시간은 deltaTime
- 즉, 위치 += 속도 * deltaTime이 된다.
플립
- 뒤집기의 기준은 그림의 중앙이 되어야한다.
- setOrigin으로 피봇(기준점)을 변경한다.
- getSize().x * 0.5f 로 설정하면 절반이 된다.
- 음수값이 방향 바꾸기이다.
벡터2D
- 벡터는 ‘방향’과 ‘크기’(속력)를 나눠서 볼 수 있다.
- direction = {1.f , 0.f } / speed = 200.f;
- velocity == direction * speed
- 결과 : { 200.0f , 0.f }
- 즉, 세분화해서 수정하려면 2개를 나눠서 봐야한다.
define - 식별자
'공부 > SFML' 카테고리의 다른 글
| 씬 매니저, 프레임워크 클래스, 백그라운드 오브젝트, 실수 난수 출력, 트리 (3) |
2025.06.30 |
| 게임 오브젝트, 스프라이트 게임 오브젝트, 텍스트 게임 오브젝트, 디파인즈, 유틸즈, 씬, 게임 씬, 반복적인 include 처리 (0) |
2025.06.27 |
| vector, iterator, list, LinkedList 자료구조, SFML Framework 준비, InputManager, 싱글턴 디자인 패턴, Resource Manager, map, 비주얼 스튜디오 자체 에러 문제 해결 (3) |
2025.06.26 |
| 이벤트 루프, 문자 UI, 문자열 연결, 타임 바, 사운드, 가속도 (2) |
2025.06.13 |
| 열거형 enum, 상수 const, 키보드 입력 - 이벤트, pressed 처리 (1) |
2025.06.12 |