-
[SinCosTan 그래프] 삼각함수 그래프 그리기 및 움직이기유니티 2022. 12. 16. 03:36728x90
멈춰져있는 그래프
그래프마다 Mathf.Sin(x) Mathf.Cos(x) Mathf.Tan(x) 바꿈
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; // UI 사용 public class SinGrape : MonoBehaviour { public LineRenderer sinelinerenderer; public int dot_number; // 그래프에 찍는 점의 갯수 void Start() { sinelinerenderer = GetComponent<LineRenderer>(); // LineRenderer 사용 } void Update() { Sin(); // 프레임마다 찍힘(x 값만 보면 2파이값에 점점 가까워진다.) } void Sin() { float x_0 = 0; // x 시작점 float delta = 2 * Mathf.PI; // delta 값을 2파이로 설정 float x_n = delta; // x 끝점 sinelinerenderer.positionCount = dot_number; // 그래프 점 찍는 갯수 입력 for(int currentPoint = 0; currentPoint<dot_number; currentPoint++) // 첫 값 0, 끝까지 1씩 늘리면서 반복 { float progress = (float)currentPoint / (dot_number - 1); // n번째/(점 갯수-1) float x = Mathf.Lerp(x_0, x_n, progress); // 점x_0, 점x_n 사이의 %값 (0,1,0.2)라면 0 0.2 0.4 0.8에 점이 찍힘 float y = Mathf.Sin(x); sinelinerenderer.SetPosition(currentPoint, new Vector3(x, y, 0)); // 선 벡터로 표시 } } }
움직이는 그래프
Mathf.Sin(x)에서
함수 안의 x값을 움직인다.
Time.time으로 시간이 흐를때마다
x값을 변화시킨다.
Mathf.Sin(x) -> Mathf.Sin(x+Time.time)
계속 움직이나
삼각함수의 주기성때문에
반복되는 것 처럼 보임
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; // UI 사용 public class SinWave : MonoBehaviour { public LineRenderer sinelinerenderer; public int dot_number; // 그래프에 찍는 점의 갯수 void Start() { sinelinerenderer = GetComponent<LineRenderer>(); // LineRenderer 사용 } void Update() { Sin(); // 프레임마다 찍힘(x 값만 보면 2파이값에 점점 가까워진다.) } void Sin() { float x_0 = 0; // x 시작점 float delta = 2 * Mathf.PI; // delta 값을 2파이로 설정 float x_n = delta; // x 끝점 sinelinerenderer.positionCount = dot_number; // 그래프 점 찍는 갯수 입력 for (int currentPoint = 0; currentPoint < dot_number; currentPoint++) // 첫 값 0, 끝까지 1씩 늘리면서 반복 { float progress = (float)currentPoint / (dot_number - 1); // n번째/(점 갯수-1) float x = Mathf.Lerp(x_0, x_n, progress); // 점x_0, 점x_n 사이의 %값 (0,1,0.2)라면 0 0.2 0.4 0.8에 점이 찍힘 float y = Mathf.Sin(x + Time.time); sinelinerenderer.SetPosition(currentPoint, new Vector3(x, y, 0)); // 선 벡터로 표시 } } }
728x90'유니티' 카테고리의 다른 글
[유니티 포폴] 무기에 몬스터가 닿을때 설정하기 (0) 2023.01.08 [유니티 포폴] 몬스터 에셋 갖고오기 (0) 2023.01.07 [SinCosTan 그래프] 유니티 UI 어긋남 World Space (0) 2022.12.16 [SinCosTan 그래프] 유니티 토글 Toggle 만들기 (0) 2022.12.11 유니티 플레이어 움직이기 (0) 2022.12.04