제작과정 1을 보고싶다면!
https://bigballdiary.tistory.com/30
[unity] class5_3D게임_제작과정1(지형설정, paint)
1. Lighting설정하기 Directional Light만으로는 어둡기 때문에 Lighting을 추가해 주어야 한다. (*이때, Auto Generate 체크는 해제한다.) 2. 지형배치하기_Terrain 1) 지형 생성하기 3D object -> Terrain을..
bigballdiary.tistory.com
1. 과녁에 collider적용하기
과녁 object선택 후 AddComponent에서 과녁에 Box Collider을 적용한다.
2. 밤송이에 Rigidbody컴포넌트와 collider을 적용한다.
밤송이에 Rigidbody컴포넌트와 collider을 추가한다.
3. 밤송이를 날리기 위한 스크립트 작성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BamController : MonoBehaviour
{
public void Shoot(Vector3 dir) //인자로 3차원 벡터가 입력되고
{
GetComponent<Rigidbody>().AddForce(dir); // 들어온 입력벡터 만큼 오브젝트에 힘이 가해진다.
}
// Start is called before the first frame update
void Start()
{
Shoot(new Vector3(0, 200, 2000));
*과녁과 충돌 할 시 그 상태로 정지할 수 있도록 중력의 영향을 무시하도록 한다 : iskinematic = true
4. 밤송이에 particle 효과 적용
1) paricle 컴포넌트를 추가한다.
2) particle효과 알맞게 수정하기
- particle의 종류변경은 Renderer -> Material에서 할 수 있다.
- particle의 분사모양 변경은 Shape에서 할 수 있다.
- particle 생성패턴 조절은 Emission에서 할 수 있다.
- particle 지속시간, 반복재생 해제
- particle이 서서히 사라지도록 만들기 : size over life time
5. particle 스크립트 작성 : 생성시기 설정
public void OnCollisionEnter(Collision collision) //다른 물체와 충돌하는 순간
{
GetComponent<Rigidbody>().isKinematic = true; //중력의 영향을 무시
GetComponent<ParticleSystem>().Play(); // particle효과를 실행시킨다.
}
과녁과 충돌하는 순간 particle을 재생시키기 위해 위와 같은 코드를 추가한다.
6. 밤송이 Generator 스크립트 작성 : 밤을 날린 후 다시 밤송이가 생성되도록
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BamGenerator : MonoBehaviour
{
public GameObject bamPrefab;
void Start()
{
}
void Update()
{
if (Input.GetMouseButtonDown(0)) //마우스버튼을 누르는 경우
{
GameObject bam = Instantiate(bamPrefab) as GameObject; //밤 오브젝트를 생성하고
}
}
밤을 날린 후 다시 밤송이가 생성되도록 위와 같이 스크립트를 작성해준다.
prefab으로 밤 오브젝트를 넘겨준다.
7. 밤송이 날리는 방향설정 : ScreenPointToRay 메서드 이용
월드 좌표계 (3차원)와 스크린 좌표계(2차원)은 전혀 다른 척도이다.
따라서 마우스 클릭하는 방향(2차원 좌표계)으로 밤송이(3차원 좌표계)를 날리기 위해선 좌표설정을 수정해주어야 한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BamGenerator : MonoBehaviour
{
public GameObject bamPrefab;
void Start()
{
}
void Update()
{
if (Input.GetMouseButtonDown(0)) //마우스버튼을 누르는 경우
{
GameObject bam = Instantiate(bamPrefab) as GameObject; //밤 오브젝트를 생성하고
//마우스가 탭한 위치를 스크린 좌표계로 변환시켜준다.
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //인자로 들어온 좌표로 향하는 광선(Ray) 클래스를 반환한다.
Vector3 worldDir = ray.direction; //
bam.GetComponent<BamController>().Shoot(worldDir.normalized*2000); //BamController스크립트에서 작성한 Shoot함수를 호출시킨다.
}
}
}
- 광원 좌표 = Main Camera의 좌표
- 벡터.normalized : 길이가 1인 단위 벡터로 바꿔준다.
- 광원 방향 = 화면을 누른 좌표 지점으로 향하는 방향
'대외 활동 > 유니티 스터디' 카테고리의 다른 글
[ardunity]_기본 사용법 (ardunity 설치하기, 기본 셋팅) (0) | 2021.08.31 |
---|---|
[unity] class5_3D게임_제작과정1(지형설정, paint) (0) | 2021.08.06 |
[unity] class5_3D게임 (1) | 2021.08.06 |
[unity] class4_physics와 애니메이션_제작과정2 (0) | 2021.07.24 |
[unity] class4_physics와 애니메이션_제작과정1 (0) | 2021.07.24 |