인프런 커뮤니티 질문&답변

이해울님의 프로필 이미지
이해울

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Collision

collider관련 질문 있습니다.

작성

·

328

0

안녕하세요! 강의를 다 듣고 프로젝트 진행하고 있습니다. 

collider부분에서 문제가 있어서 다시 강의보고 있는데,  해결방법이 도무지 생각나지 않습니다. 

traffic system을 만들고 있는데,  한 대의 차가 다른 차와 부딪히면,  잠시동안 둘 중에 하나의 차만 멈추고 이후에는 두대의 속도를 같게 하여 다시 부딪치지 않게 하는 코드를 작성중입니다. 

private void OnCollisionEnter(Collision collision)

    {

        if (collision.gameObject.tag == "Car") 

        {

            NpcCarController mine = gameObject.GetComponent<NpcCarController>();

            NpcCarController othercar = collision.gameObject.GetComponent<NpcCarController>();

           

            timer += Time.deltaTime;

            if (timer < waitingtime)

            {

                mine.movementSpeed = 0;

                timer = 0;

            }

            else 

            {

                mine.movementSpeed = othercar.movementSpeed;

            }

        }

    }

하지만, 저가 차를 20대 정도 스폰하고 모든 차에 저 코드가 포함된 스크립트를 공통으로 붙여서 a차와 b차가 충돌할 경우, a차에서 mine은 a차, othercar는 b차. b차에서 mine은 b차 othercar는 a차가 되어서 두차 모두 쉬고 다시 출발하는 코드가 되어버립니다. 

 혹시 코드를 고쳐서 둘중의 한대의 차만 movementspeed를 0으로 할 수 있는 방법이 있을까요?

ps. 강의가 프로젝트에 큰 도움이 되었습니다.  감사합니다.

답변 2

0

이해울님의 프로필 이미지
이해울
질문자

아하 다른방법을 생각해 봐야겠네요 감사합니다.

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

NpcCarController에 추가 정보를 기입해서 부딪힌 애를 추적해서 처리를 막는다거나~
하는 꼼수는 있겠지만 모든 경우의 수에 대해 챙기는 것은 쉽지 않아 보이네요.

이해울님의 프로필 이미지
이해울

작성한 질문수

질문하기