inflearn logo
강의

Course

Instructor

[MMORPG Game Development Series with C# and Unity] Part3: Unity Engine

Monster AI #2

_destPos가 계속 0인 상태입니다.

497

soso03185

9 asked

0

(이전에 오류 해결해서 글 수정합니다!)

(질문)첫 감지를 통해 몬스터가 이동하면 플레이어가 어디에 있던  0,0,0으로 이동합니다.

몬스터가 움직이기 전에는 _destPos가 정상적으로 변하는데, 움직이기 시작하면 0으로 고정이 됩니다.

이러한 것들은 유니티와 연결해서 멈추고 확인해봤습니다!

그런데 플레이어는 문제 없이 계속 작동하고 있습니다..

C# unity

Answer 4

0

soso03185

헐.. 감사합니다

0

Rookiss

한 줄이 빠져 있었네요.

0

Rookiss

최대한 디버깅을 해보면서 의심가는 코드의
메모리를 살펴보는 식으로 해결해야 합니다.
고민 후 원인 파악이 안 되면
전체 프로젝트 압축 후 rookiss@naver.com로 보내주시기 바랍니다.

0

soso03185

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.AI;

public class MonsterController : BaseController

{

    Stat _stat;

    [SerializeField]

    float _scanRange = 10f;

    [SerializeField]

    float _attackRange = 2;

    public override void Init()

    {

        _stat = gameObject.GetComponent<Stat>();

        if (gameObject.GetComponentInChildren<UI_HPBar>() == null)

            Managers.UI.MakeWorldSpaceUI<UI_HPBar>(transform);

    }

    protected override void UpdateIdle()

    {

        Debug.Log("Monster UpdateIdle");

        GameObject player = GameObject.FindGameObjectWithTag("Player");

        if (player == null)        

            return;

        float distance = (player.transform.position - transform.position).magnitude;

        if(distance <= _scanRange)

        {

            _lockTarget = player;

            State = Define.State.Moving;

            return;

        }

    }

    protected override void UpdateMoving()

        {

        //플레이어가 내 사정거리보다 가까우면 공격

        if (_lockTarget != null)

        {

            float distance = (_destPos - transform.position).magnitude;

            if (distance <= _attackRange)

            {

                State = Define.State.Skill;

                return;

            }

        }

        //이동

        Vector3 dir = _destPos - transform.position;

        if (dir.magnitude < 0.1f)

        {

            State = Define.State.Idle;

        }

        else

        {

            NavMeshAgent nma = gameObject.GetOrAddComponent<NavMeshAgent>();

            nma.SetDestination(_destPos);

            nma.speed = _stat.MoveSpeed;

            transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 20 * Time.deltaTime);

        }

    }

    protected override void UpdateSkill()

    {

        Debug.Log("Monster UpdateSkill");

    }

    void OnHitEvent()

    {

        Debug.Log("Monster OnHitEvent");

    }

}

UI 기능 관련 질문이 있습니다!

0

37

2

픽셀 좌표 스크린 좌표

0

33

0

전체적으로 코드 읽는게 굉장히 오래 걸리네요...

0

73

2

카메라 #2 수업 캐릭터 쓰러짐 해결

0

84

1

플레이어 움직임이 끝날때, 기울어짐 현상

0

83

1

Input 적용과 관련하여 질문 있습니다.

0

75

1

디버그 불가.. Unity에 연결 불가

0

82

1

달리기 애니메이션 에러

0

89

2

오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다

0

66

1

GetKey 오류

0

109

2

에셋을 어디에 올려두신지 알 수 있나요?

0

107

1

재귀호출? 오류나는데 왜 이래요 ?

0

169

6

Animation blending 파라미터 계산

0

68

1

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

0

97

3

오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다

0

88

2

질문있습니다

0

143

2

아 이거 소스코드 같은거 없나요?

0

142

3

질문 드립니다. string.IsNullOrEmpty(name)

0

87

2

@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?

0

136

2

유니티6 NavMesh 안되는분들

1

176

1

Unity6 Unity-Chan Material 마젠타 문제 해결법

7

527

1

GetComponent<Poolable> 질문드립니다.

0

102

2

UI 불러오지 못함

0

118

2

UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.

0

155

2