unity - 3d 기본 예제-밤송이
2023. 8. 4.

terrain

 

-셰이더는 조명 및 컬러 효과를 구현

-텍스처는 2의 제곱수로 만들어야한다.

 

 

 

tag 

-태그는 추가해도 ctrl s가 아니라 project save를 해주어야만 저장된다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BamsongiGenerator : MonoBehaviour
{
    //밤송이 프리팹 
    public GameObject bamsongiPrefab;

    void Start()
    {

    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //화면을 터치 하면 월드공간에서 Ray를 생성함 
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //생성된 레이를 에디터에서 출력 
            Debug.DrawRay(ray.origin, ray.direction * 1000f, Color.red, 1f);

            //ray.direction.normalized (단위벡터로 변경)
            //길이가 1인 벡터 : 방향 
            Vector3 force = ray.direction.normalized * 2000f;
            this.CreateBamsongi(force);
        }
    }

    private void CreateBamsongi(Vector3 force)
    {
        //새로운 밤송이를 생성한다 
        GameObject go = Instantiate(this.bamsongiPrefab);
        BamsongiController controller = go.GetComponent<BamsongiController>();
        controller.Shoot(force);
    }
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BamsongiController : MonoBehaviour
{
    private Rigidbody rBody;
    [SerializeField]
    private float forwardForce = 2000;
    private ParticleSystem effect;

    private void Awake()
    {
        this.rBody = this.GetComponent<Rigidbody>();
        this.effect = this.GetComponent<ParticleSystem>();
        Debug.Log("Awake");
    }

    void Start()
    {
        //this.Shoot();
        Debug.Log("Start");
    }

    public void Shoot(Vector3 force)
    {
        Debug.Log("Shoot");
        //앞으로 힘으로 줘서 이동시킨다 
        //앞 : (0, 0, 1)
        //Vector3.forward (월드좌표)
        //밤송이가 바라보는 앞쪽? (로컬좌표)
        this.rBody.AddForce(force);
    }


    private void OnCollisionEnter(Collision collision)
    {
        //충돌한 대상의 게임오브젝트의 이름 

        if (collision.gameObject.tag == "Target")
        {
            Debug.Log("과녁에 충돌!");
            this.rBody.isKinematic = true;
            this.effect.Play();
        }
    }
}

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

Unity-예제-AppleBasket(GameScene)  (0) 2023.08.07
Unity- 버튼 클릭(Onclick)하면 이동  (0) 2023.08.04
Hero Jump 예제  (0) 2023.08.03
rigidbody가 없을 때 이동: Translate  (0) 2023.08.03
애니메이션 전환 연습  (0) 2023.08.03
myoskin