
<스크립트 기본 틀>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rtan : MonoBehaviour
{
// Start is called before the first frame update (최초 1회만 실행)
void Start()
{
}
// Update is called once per frame (1프레임당 계속 업데이트)
void Update()
{
}
}
●축 이동
transform.position += Vector3.right * direction; 에서 Vector3는(x, y, z)축을 의미한다.
Vector3.right는(1, 0, 0)을 의미하고, left는 (-1, 0, 0)을 의미한다.
Vector3.right direction;은 direction = 0.05일 경우, (1 x 0.05, 0 x 0.05, 0 x 0.05)가 된다.
●마우스 클릭(조건문)

GetMouseButtonDown은 마우스 버튼을 눌렀을 때, GetMouseButton은 마우스 버튼을 누르는 동안, 그리고 GetMouseButtonUp은 누르던 마우스 버튼을 뗐을 때 true를 반환한다.
GetMouseButtonDown(0) = 마우스 좌클릭 / GetMouseButtonDown(1) = 마우스 우클릭 / GetMouseButtonDown(2) = 마우스 휠클릭
출처: https://hotsunchip.tistory.com/5
●Sprite Renderer 제어

1) Sprite Renderer component 사용하기 위한 선언,초기화
public SpriteRenderer renderer; // Sprite Renderer 선언
renderer = GetComponent(); // 게임오브젝트의 Sprite Renderer 컴포넌트 가져오기
2) Flip
Flip의 x는 좌우, y는 상하반전이다.
renderer.flipX = true; // true는 flip체크, false는 체크해제

ex)


출처: https://allaboutmakers.tistory.com/21
● Rigidbody 2D
Rigidbody 2D는 물리에 필요한 다양한 힘들을 적용시키는데 사용하는 컴포넌트다. (중력, 마찰력, 물체의 무게값 같은)
추가 후
적용시키면 Rain이 중력을 받고 아래로 떨어지게 된다.
● Circle Collider 2D / Box Collider 2D
Rigidbody 2D를 적용 후 실행시켜 보면 Ground에 멈추지 않고 뚫고 떨어질 것이다.
그래서 충돌 현상을 구현하는 Circle Collider 2D를 이용한다. (Rain이 원이기 때문에 Circle Collider 2D로 만들어야 한다.)
추가 후
이제 Ground에도 똑같이 Circle Collider 2D를 적용시켜 서로 충돌이 되게 만들어준다. (★Ground는 네모로 만들었기 때문에 Box Collider 2D로 만들어준다.)
그래야 Rain과 Ground가 충돌 했을 시 구체가 Ground에 멈추게 된다.
● Ground와 충돌 후 Rain 파괴
public class Rain : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnCollisionEnter2D(Collision2D collision) // 충돌 상황에서 사용
{
if (collision.gameObject.CompareTag("Ground")) // 태그에 Ground 값이 있을 때 실행
//if(collision.gameObject.name == "Ground")는 collision 이 적용된 게임 오브젝트의 네임이 Ground 와 같다면 실행
{
Destroy(this.gameObject); // this는 Rain 스크립트가 붙어있는 자기 자신을 의미
}
}
}
Rain이 Ground에 충돌 후에 계속 남아있으면 안 되기 때문에 제거를 해줘야 한다.
충돌 구현은 따로 정해진 자리가 있기 때문에 void Update()안에 사용하지 않는다.
private void OnCollisionEnter2D(Collision2D collision)
On: 이벤트가 발생할 때 사용을 의미
CollisionEnter: 충돌이 시작되는 그 순간을 의미
이렇게 2가지 방법으로 사용할 수 있다.
2번을 적용하기 위해서는 태그를 지정해줘야 하는데
태그는 처음에 Untagged로 되어있다. 태그가 지정이 안 되어있다는 뜻
Add tag를 통해 tag를 추가시켜주면 끝
1번을 누르고 -> 2번의 이름을 Ground로 변경 -> 3번을 눌러 저장하면 적용이 된다.