Unity

AddForce Method를 이용한 물체 던지기 / 오브젝트 던지기(Unity)

힘법사 2020. 12. 26. 18:16
728x90

 안녕하십니까!! 힘법사입니다. 오늘은 유니티에서 물체를 던져보겠습니다. 그 전에 보고 오시면 좋은 게시물 네개 말씀해드리겠습니다.

유니티 오브젝트 텍스처(Texture)지정하기(Unity) (tistory.com)

 

유니티 오브젝트 텍스처(Texture)지정하기(Unity)

 안녕하십니까, 오늘은 간단한 글로 돌아왔습니다. 오늘 보여드릴 것은 유니티에서 3D 오브젝트에 텍스처를 지정하는 방법입니다! 예를 들어 3D 오브젝트 cube를 상자 texture를 입혀 상자로 만들

himbopsa.tistory.com

해당 게시물에서는 오늘 실습에 사용되는 오브젝트의 텍스처를 어떻게 설정했는지 설명해두었습니다.

실습에 사용된 맵은 어떤 방식으로 제작됬는지 궁금하신 분은

3D map 제작 / 테라인(Terrain) (Unity) (tistory.com)

 

3D map 제작 / 테라인(Terrain) (Unity)

 안녕하십니까, 힘법사입니다. 오늘도 유니티로 돌아왔습니다. 오늘 다뤄볼 주제는! 프로그래밍이 아닌, 유니티로 맵을 만들어 보겠습니다. 먼저 유니티 프로젝트를 만들어줍니다. (※3D 로 프

himbopsa.tistory.com

이 게시물을 참고해주시면 됩니다.

마지막으로 물체에 중력, 충돌과 같은 물리 법칙이 어떻게 적용됬는지 궁금하신 분은 아래 두 게시물을 참고해주세요.

게임 오브젝트 물리법칙 적용(Rigidbody)(Unity) (tistory.com)

 

게임 오브젝트 물리법칙 적용(Rigidbody)(Unity)

Unity에서 Physics를 함수를 이용해서 구현할 수 있을 것입니다. 하지만, 이 과정이 번거롭기도하고 간단하게 구현할 수 있는 방법이 있습니다. 컴포넌트 : RigidBody : 힘 계산을 담당(물체에 작용하는

himbopsa.tistory.com

게임 오브젝트 물리법칙 적용(Colider)(Unity) (tistory.com)

 

게임 오브젝트 물리법칙 적용(Colider)(Unity)

게임 오브젝트 물리법칙 적용(Rigidbody / Colider)(Unity) (tistory.com) 게임 오브젝트 물리법칙 적용(Rigidbody)(Unity) Unity에서 Physics를 함수를 이용해서 구현할 수 있을 것입니다. 하지만, 이 과정이 번..

himbopsa.tistory.com

사전 작업으로 Colider , Terrain, Rigidbody를 미리 설정해주고 다음 그림처럼 오브젝트들을 배치했습니다.

그림. 배치 그림과, 실행 상상도

프로그래밍을 통해서 마우스를 클릭하면 좌측의 돌이 날라가 상자를 맞추도록 해보겠습니다.

그림. StoneController c#

먼저 C# Script를 만들어주고 이름을 StoneController로 바꿔주세요

그리고 내부 프로그래밍을 다음과 같이 해주시면 됩니다. 주석에 모든 설명이 있으시니 이해하기 어렵지 않으실 겁니다.

 

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

public class StoneController : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        GetComponent<Rigidbody>().isKinematic = true;
        //시작과 동시에 물체가 추락하지 않도록 하기 위한 코드

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // 마우스 클릭시 발동
        {
            GetComponent<Rigidbody>().isKinematic = false;
            //물체가 여러 물리력을 받도록 허용하는 코드
            Shoot();
            // 발사!!
        }
    }
    public void Shoot()
    {   //Y축으로 200만큼 Z 축으로 2000만큼의 힘으로 발사시키는 함수
        Vector3 speed = new Vector3(0, 200, 2000);
        GetComponent<Rigidbody>().AddForce(speed);
    }
}

네 해당코드를 써주시고 저장해주시면 실제 물리법칙 아래에서처럼 자연스럽게 돌이 날라갑니다

 

동영상. 시연영상

아주 잘 작동하는군요!

다음 시간에는 돌을 원하는 만큼 던질 수 있도록 Prefeb을 만드는 게시물을 포스팅하겠습니다.

긴글 읽어주셔서 감사합니다.

 

728x90