게임 오브젝트에 사운드를 넣는 방법


Add Component에 Audio Source를 추가한다.


AudioClip에 원하는  사운드를 추가한다.


Play On Awake가 기본적으로 체크되어 있어서 게임상에 오브젝트가 생성될 때 자동으로 소리가 난다.


이 기능을 원하지 않을 경우 체크를 해제 하고 사용한다.



'유니티' 카테고리의 다른 글

[유니티] 폭발 이펙트 추가  (0) 2019.03.12
[유니티] Object 충돌  (0) 2019.03.08
[유니티] Random 위치에 Object 이동  (0) 2019.03.07
[유니티] Object 생성  (0) 2019.03.05
[유니티]Object 삭제  (0) 2019.03.04

Asset Store에서 원하는 폭발 이펙트를 검색하여 Import 한다.


추가하였다면 Prefabs폴더에 추가하고 한번만 폭발하도록 Script를 추가한다.


충돌하였을 때 폭발 하도록 충돌 이벤트에 폭발 이펙트를 생성시켜준다.





1
2
3
4
5
6
7
8
9
10
11
public class DestroyAtTime : MonoBehaviour
{
    public float Time = 0.5f;
 
    // Start is called before the first frame update
    void Start()
    {
        //Time 후 Object 삭제
        Destroy(gameObject, Time);
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class EnemyControl : MonoBehaviour
{
    public float Speed = 50.0f;
    private Transform myTransform = null;
    
    //폭발 Object
    public GameObject Explosion = null;
 
    // Start is called before the first frame update
    void Start()
    {
        myTransform = GetComponent<Transform>();
    }
 
    // Update is called once per frame
    void Update()
    {
        Vector3 moveAmount = Speed * Vector3.back * Time.deltaTime;
        myTransform.Translate(moveAmount);
 
        if(myTransform.position.y <= -60.0f)
        {
            InitPosition();
        }
    }
 
    /// <summary>
    /// 위치 초기화
    /// </summary>
    void InitPosition()
    {
        myTransform.position = new Vector3(Random.Range(-60.0f, 60.0f), 60.0f, 0.0f);
    }
 
    //충돌 이벤트 함수
    void OnTriggerEnter(Collider other)
    {
        if(other.tag == "Bullet")
        {
            Debug.Log("Bullet Trigger Enter");
            //폭발 Object 생성
            Instantiate(Explosion, myTransform.position, Quaternion.identity);
 
            InitPosition();
            Destroy(other.gameObject);
        }
    }
}
cs


'유니티' 카테고리의 다른 글

[유니티] 사운드 삽입  (0) 2019.03.13
[유니티] Object 충돌  (0) 2019.03.08
[유니티] Random 위치에 Object 이동  (0) 2019.03.07
[유니티] Object 생성  (0) 2019.03.05
[유니티]Object 삭제  (0) 2019.03.04

충돌 감지가 필요한 Object에 Add Component를 눌러 Box Collider를 추가한다.


추가된 Box Collider의 Size를 늘려 충돌 영역을 넓혀준다.


실제 충돌을 감지할 Object에는 Rigidbody를 추가한다.


OnTriggerEnter 함수에 충돌하였을때 발생할 이벤트를 작성한다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class EnemyControl : MonoBehaviour
{
    public float Speed = 50.0f;
    private Transform myTransform = null;
    
    // Start is called before the first frame update
    void Start()
    {
        myTransform = GetComponent<Transform>();
    }
 
    // Update is called once per frame
    void Update()
    {
        Vector3 moveAmount = Speed * Vector3.back * Time.deltaTime;
        myTransform.Translate(moveAmount);
 
        if(myTransform.position.y <= -60.0f)
        {
            myTransform.position = new Vector3(Random.Range(-60.0f, 60.0f), 60.0f, 0.0f);
        }
    }
 
    //충돌 이벤트 함수
    void OnTriggerEnter(Collider other)
    {
        if(other.tag == "Bullet")
        {
            Debug.Log("Bullet Trigger Enter");
        }
    }
}
cs


'유니티' 카테고리의 다른 글

[유니티] 사운드 삽입  (0) 2019.03.13
[유니티] 폭발 이펙트 추가  (0) 2019.03.12
[유니티] Random 위치에 Object 이동  (0) 2019.03.07
[유니티] Object 생성  (0) 2019.03.05
[유니티]Object 삭제  (0) 2019.03.04

Transform 컴포넌트 위치에 Vector3(x좌표, y좌표, z좌표)를 입력하면 이동시킬 수 있다.


Random 위치는 Random.Range(시작, 끝) Random한 값을 가져올 범위를 입력해주면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class EnemyControl : MonoBehaviour
{
    public float Speed = 50.0f;
    private Transform myTransform = null;
    
    // Start is called before the first frame update
    void Start()
    {
        myTransform = GetComponent<Transform>();
    }
 
    // Update is called once per frame
    void Update()
    {
        Vector3 moveAmount = Speed * Vector3.back * Time.deltaTime;
        myTransform.Translate(moveAmount);
 
        if(myTransform.position.y <= -60.0f)
        {
            myTransform.position = new Vector3(Random.Range(-60.0f, 60.0f), 60.0f, 0.0f);
        }
    }
}
cs


'유니티' 카테고리의 다른 글

[유니티] 폭발 이펙트 추가  (0) 2019.03.12
[유니티] Object 충돌  (0) 2019.03.08
[유니티] Object 생성  (0) 2019.03.05
[유니티]Object 삭제  (0) 2019.03.04
[유니티] Object 좌우 이동  (0) 2019.03.02

1. GameObject 타입의 변수를 추가해준다. 이 변수에 추가한 Object가  생성하게 될 Object가 된다.


2. Instantiate(생성할 Object, 생성할 위치값, 생성할 회전값)으로 Object가 생성된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class PlayerControl : MonoBehaviour
{
    public float speed = 15.0f;
    private Transform myTransform = null;
    // 생성하게 될 Object
    public GameObject BulletPrefab = null;
 
 
    // Start is called before the first frame update
    void Start()
    {
        myTransform = GetComponent<Transform>();
    }
 
    // Update is called once per frame
    void Update()
    {   
        float axis = Input.GetAxis("Horizontal");
 
        Vector3 moveAmout = axis * speed * -Vector3.right * Time.deltaTime;
 
        myTransform.Translate(moveAmout);
 
        if(Input.GetKeyDown(KeyCode.Space) == true)
        {
            //인스턴싱.
            Instantiate(BulletPrefab, myTransform.position, Quaternion.identity);
        }
    }
}
cs


'유니티' 카테고리의 다른 글

[유니티] Object 충돌  (0) 2019.03.08
[유니티] Random 위치에 Object 이동  (0) 2019.03.07
[유니티]Object 삭제  (0) 2019.03.04
[유니티] Object 좌우 이동  (0) 2019.03.02
[유니티] Object에 Script연결  (0) 2019.03.01

Object를 삭제하기전에 먼저 Prefabs폴더를 생성하여 Object를 끌어다가 저장해둔다.


스크립트에서 'Destroy(gameObject);'를 해줄경우 현재의 Object가 삭제되는 것을 볼 수 있다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class BulletControl : MonoBehaviour
{
    public float BulletSpeed = 100.0f;
    private Transform myTransform = null;
 
    // Start is called before the first frame update
    void Start()
    {
        myTransform = GetComponent<Transform>();
    }
 
    // Update is called once per frame
    void Update()
    {
        Vector3 moveAmount = BulletSpeed * Vector3.up * Time.deltaTime;
        myTransform.Translate(moveAmount);
 
        if(myTransform.position.y == 60.0f)
        {
            Destroy(gameObject);
        }
    }
}
cs

'유니티' 카테고리의 다른 글

[유니티] Random 위치에 Object 이동  (0) 2019.03.07
[유니티] Object 생성  (0) 2019.03.05
[유니티] Object 좌우 이동  (0) 2019.03.02
[유니티] Object에 Script연결  (0) 2019.03.01
[유니티] 2D 배경 설정  (0) 2019.02.28


Input 클래스에 GetAxis("Horizontal")을 입력하여 좌우 입력값을 받아온다. (입력값 왼쪽 : -1, 오른쪽 : 1) 


프레임당 이동 거리를 구한다 (입력값 * 스피드 * 방향 * 입력한 시간)


GetComponent는 Object가 여러개일 경우 제일 먼저있는 Object를 가져온다.


Transform Translate에 값을 입력하여 Object를 이동시킨다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class PlayerControl : MonoBehaviour
{
    public float speed = 15.0f;
    private Transform myTransform = null;
 
 
    // Start is called before the first frame update
    void Start()
    {
        myTransform = GetComponent<Transform>();
    }
 
    // Update is called once per frame
    void Update()
    {   
        float axis = Input.GetAxis("Horizontal");
        
        Vector3 moveAmout = axis * speed * -Vector3.right * Time.deltaTime;
 
        myTransform.Translate(moveAmout);
    }
}
cs


'유니티' 카테고리의 다른 글

[유니티] Object 생성  (0) 2019.03.05
[유니티]Object 삭제  (0) 2019.03.04
[유니티] Object에 Script연결  (0) 2019.03.01
[유니티] 2D 배경 설정  (0) 2019.02.28
[유니티] 메인카메라 3D -> 2D 변경  (0) 2019.02.27

원하는 Object의 Inspector뷰에 추가할 Script를 드래그하여 추가한다.


추가한 Script의 Public 변수는 값을 변경할 수 있게 노출된다.


Public 변수의 값을 변경할 경우 초기값보다 우선 된다.




'유니티' 카테고리의 다른 글

[유니티]Object 삭제  (0) 2019.03.04
[유니티] Object 좌우 이동  (0) 2019.03.02
[유니티] 2D 배경 설정  (0) 2019.02.28
[유니티] 메인카메라 3D -> 2D 변경  (0) 2019.02.27
[유니티] 유니티 API 메뉴얼  (0) 2019.02.26

+ Recent posts