물리 충돌 이벤트 [골드메탈님 유니티 입문 강좌 B11]

 

+

 

 

스크롤 바는 끄기

tab 은 top 으로 

이래야 비쥬얼 스크립트 작게 켜도 보기 좋게 됨

 

+

스크립트 쓸 때 On 만써도 

On어쩌구 저쩌구 리스트가 쫙 뜬다

 

특정 상황일 때 발동하는 조건문이다

 

여기선 void OnCollisionEnter 를 쓰겠다

물리적인 충돌이 시작되었을때. 를 의미

 

+

 

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name 
        == "MyCapsule")
        mat.color = new Color(0,0,0);

    }
    void OnCollisionExit(Collision collision)
    {
        if (collision.gameObject.name
        == "MyCapsule")
            mat.color = new Color(1, 1, 1);

 

mat color 0 0 0 은 검은색이다

 

mat color 1 1 1 은 흰색이다

 

mat color 255 255 255 는 흰색이 아니다. 엄청 밝은 눈뽕 빛이 되버리니 주의할것

 

 

0 0 0 1 1 1 255 255 255

 

 

 

+

 

 

~~~~~~~~~~~~~~~~~~~~~ 갑자기 문제 생김 ~~~~~~~~~~~~~~~

 


문제1. 특정 스크립트 부분이 싹 다 회색으로 변하는 문제
->모노비헤비어 스크립트 하나만 남겨두고 나머지 싹 다 지우니 해결된건가?

 

 비쥬얼 스튜디오   툴 옵션 - 툴 포 유니티 이것저것 다 false 로 하니 해결된건가? 

-> 또 회색으로 보임; 해결 안됨

 


문제2.  플레이 모드시 키보드 인풋, 마우스 인풋이 안되는 문제 발생

->

플레이어 오브젝트에 할당된 스크립트 컴포넌트를 다 지우고. 

다시 스크립트를 드래그해서 지정하니 점프만 해결됨

상하좌우 인풋입력은 해결안됨..

다음 스크립트를 다시 제대로 입력하니 해결 됨

 

using UnityEngine;

public class moving : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {
        rigid = GetComponent<Rigidbody>();

    }
    void FixedUpdate()
    {
        if (Input.GetButtonDown("Jump"))
        {
            rigid.AddForce(Vector3.up * 3, ForceMode.Impulse);
        }

        Vector3 vec = new Vector3
            (
        Input.GetAxisRaw("Horizontal"), //x 축
        0,//y 축
        Input.GetAxisRaw("Vertical") //z 축
            );
        rigid.AddForce(vec / 2, ForceMode.Impulse);
    }

    void OnTriggerStay(Collider other)

    {
        if (other.name == "Sphereother")
            rigid.AddForce(Vector3.up * 1, ForceMode.Impulse);
    }
}

 

~~~~~~~~~~~~~~~~~~~~~ 갑자기 문제 생김 ~~~~~~~~~~~~~~~

 

암튼 1년 이상된 이상한 에셋 다 쓰지 말것

 

 

 

+

 

 

 

using UnityEngine;

public class sphereother : MonoBehaviour
{
    MeshRenderer mesh;
    Material mat;


    void Start()
    {
        mesh = GetComponent<MeshRenderer>();
        mat = mesh.material;
    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name == "Myball")
            mat.color = new Color(0, 0, 0);

    }
    private void OnCollisionExit(Collision collision)
    {
        if (collision.gameObject.name == "Myball")
            mat.color = new Color(1, 1, 1);

    }
}

 

npc 오브젝트에 삽입할 스크립트

 

Myball 이라는 오브젝트에 충돌시 색이 변하는 코드블럭

 

 

+

 

 

using UnityEngine;

public class moving : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {
        rigid = GetComponent<Rigidbody>();

    }
    void FixedUpdate()
    {
        if (Input.GetButtonDown("Jump"))
        {
            rigid.AddForce(Vector3.up * 3, ForceMode.Impulse);
        }

        Vector3 vec = new Vector3
            (
        Input.GetAxisRaw("Horizontal"), //x 축
        0,//y 축
        Input.GetAxisRaw("Vertical") //z 축
            );
        rigid.AddForce(vec / 2, ForceMode.Impulse);
    }

    void OnTriggerStay(Collider other)

    {
        if (other.name == "Cubeup")
            rigid.AddForce
            (Vector3.up * 0.2f, ForceMode.Impulse);
    }
}

 

플레이어 될 오브젝트에 삽입할 스크립트

 

wasd 또는 화살표 키를 누르면 이동

스페이스바 누르면 점프 함

 

Cubeup 에 닿으면 위로 상승함

 

(Cubeup 오브젝트의 콜리젼 콤포넌트엔 이스 트리거 활성화 해야함)

 

+

 

 

반응형
Posted by 이름이 익명
: