🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

21.06.03 16:23 작성 조회수 317

0

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

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

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

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

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

답변 4

·

답변을 작성해보세요.

0

soso03185님의 프로필

soso03185

질문자

2021.06.05

헐.. 감사합니다

0

한 줄이 빠져 있었네요.

0

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

0

soso03185님의 프로필

soso03185

질문자

2021.06.03

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");

    }

}

채널톡 아이콘