인프런 커뮤니티 질문&답변
_destPos가 계속 0인 상태입니다.
작성
·
497
퀴즈
Unity 게임 개발 프레임워크에서 Manager를 사용하는 주된 목적은 무엇일까요?
특정 오브젝트의 애니메이션을 제어하기 위해서
자주 사용되는 기능이나 시스템을 중앙에서 관리하기 위해서
캐릭터의 스탯 값을 저장하기 위해서
게임 씬의 배경 음악을 재생하기 위해서
답변 4
0
0
0
최대한 디버깅을 해보면서 의심가는 코드의
메모리를 살펴보는 식으로 해결해야 합니다.
고민 후 원인 파악이 안 되면
전체 프로젝트 압축 후 rookiss@naver.com로 보내주시기 바랍니다.
0
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");
}
}





