- 확장 메서드
확장 메서드 - C# 프로그래밍 가이드
C#에서 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 추가할 수 있습니다.
learn.microsoft.com
*극좌표계 참고 할것
https://ko.wikipedia.org/wiki/%EA%B7%B9%EC%A2%8C%ED%91%9C%EA%B3%84
극좌표계 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 여러 각이 표시된 극좌표 극좌표계(極座標系, 영어: polar coordinate system)는 평면 위의 위치를 각도와 거리를 써서 나타내는 2차원 좌표계이다. 극좌표계는 두 점
ko.wikipedia.org
*삼각함수 참고 할것
https://ko.wikipedia.org/wiki/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98
삼각함수 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 원함수는 여기로 연결됩니다. 어떤 함수를 도함수로 하는 함수에 대해서는 부정적분 문서를 참고하십시오. 코사인은 여기로 연결됩니다. 아프리카 남부의 민
ko.wikipedia.org
== 처음 배운 부분 ==
- Vector3.Dot
var toOther = Vector3.Normalize(this.monster.position - this.hero.transform.position);
DrawExtension.DrawArrow.ForDebug(this.hero.position, toOther, 0f, Color.cyan, DrawExtension.ArrowType.Solid);
var dot = Vector3.Dot(this.hero.transform.forward, toOther);
Debug.LogFormat("{0}", dot);
if (dot > this.cos)
{
this.monsterSMR.material = this.matOrigin;
}
else
{
this.monsterSMR.material = this.matBlack;
}
- 두 벡터 사이의 각도를 측정하는 방법, 다른말로 하자면 두벡터의 내적을 구하는 메서드이다. - 반환값 : float
- 코드에서는 타겟 과 오리진 사이의 정규화된 방향을 구하고 Dot 메서드를 사용해 플레이어의 현재 좌표와 타겟의 정규화된 방향과 사이의 내적을 구하는데 사용하였다. (이해한게 맞나 ㅎㅎ)
- Mathf.Cos & Mathf.sin 메서드
public void Start()
{
var x = r * Mathf.Cos((90 - this.theta) * Mathf.Rad2Deg);
var y = r * Mathf.Sin((90 - this.theta) * Mathf.Deg2Rad);
this.point.position = new Vector3(x, 0, y);
}
- 두 좌표 코사인과 사인값을 구해주는 메서드 - 반환값 : float
- Mathf.Deg2Rad - 라디안을 디그리로!
- Mathf.Rad2Deg - 디그리를 라디안으로!
- 여기서 라디안이란?
- 각의 크기를 재는 SI 유도 단위이다. 기호는 rad , 어떤 각의 라디안 값은 같은 크기의 단위원 중심각이 대하는 호의 길이와 같다.
- 그럼 디그리란? 우리가 평소 알고 있던 degree로 다른말로는 "도" 라고 한다.
- https://sinsa0918.tistory.com/m/2
[unity] 유니티 삼각함수에 대해 알아보자 (sin, cos)
본 포스팅에서는 이해를 위한 오류가 포함되어 있습니다. 또한 본 포스팅은 삼각함수가 무엇인지 알고있다는 가정하에 작성되었습니다. 유니티로 계발을 하다 보면 "삼각함수는 어떨 때 쓰는
sinsa0918.tistory.com
*참고블로그
- Vector3.Dot : 반환타입 -float
- 두 벡터 사이의 각도를 측정하는 메서드(내적을 구하는 메서드)
- 내적값을 이용하여 물체가 내적안에 들어올시 마테리얼을 변경해주는 식으로 사용하였다.
- 두 벡터 사이의 각도를 측정할때는 중점으로 부터 두벡터의 거리 (magnitude) 를 매개변수로 넣어주면 된다.
using System.Collections.Generic;
using UnityEngine;
public class TestDotMain : MonoBehaviour
{
public Transform hero; //hero
public Transform monster; //monster
public SkinnedMeshRenderer monsterSMR;
public Transform point;
private float cos;
public Material matOrigin;
public Material matBlack;
private void Start()
{
this.cos = Mathf.Cos(45 * Mathf.Deg2Rad);
Debug.LogFormat("코사인 : {0}",this.cos);
}
private void Update()
{
this.monster.transform.RotateAround(this.hero.transform.position, Vector3.up, 100 * Time.deltaTime);
var toOther = Vector3.Normalize(this.monster.position - this.hero.transform.position);
DrawExtension.DrawArrow.ForDebug(this.hero.position, toOther, 0f, Color.cyan, DrawExtension.ArrowType.Solid);
var dot = Vector3.Dot(this.hero.transform.forward, toOther);
Debug.LogFormat("내적 : {0}", dot);
if (dot > this.cos)
{
this.monsterSMR.material = this.matOrigin;
}
else
{
this.monsterSMR.material = this.matBlack;
}
}
'C# > 수업 내용' 카테고리의 다른 글
C# Partial 클래스 분할 (협업용) (0) | 2023.03.29 |
---|---|
[유니티] 데일리 리워드 (데이터 저장 불러오기 및 시간체크) (0) | 2023.02.16 |
[유니티] 원격수업 Memo (복습 & 놓친거 찾기) (0) | 2023.02.09 |
2023.01.13 오전 수업 내용 : 직렬화 (0) | 2023.01.13 |
상점 목록 및 미션 목록 & 보상 출력 (역직렬화 이용) (1) | 2023.01.13 |