작성
·
429
0
using System.Security.AccessControl; using System.Reflection.PotableExecutable; using System.IO; using System.Diagnostics; using System.Net.NetworkInformation; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PlayerController : MonoBehaviour { [SerializeField] float _speed = 10.0f; Vector3 _destPos; void Start() { Managers.Input.MouseAction -= OnMouseClicked; Managers.Input.MouseAction += OnMouseClicked; } public enum PlayerState { Die, Moving, Idle, } PlayerState _state = PlayerState.Idle; void UpdateDie() { // 아무것도 못함 } void UpdateMoving() {
Vector3 dir = _destPos - transform.position;
if (dir.magnitude < 0.1f)
{ _state = PlayerState.Idle; }
else
{
//TODO
NavMeshAgent nma = gameObject.GetOrAddComponent<UnityEngine.AI.NavMeshAgent>();
float moveDist = Mathf.Clamp(_speed * Time.deltaTime, 0, dir.magnitude);
nma.Move(dir, normalized * moveDist); Debug.DrawRay(transform.position, dir. normalized, Color.Green);
//Debug.DrawRay(transform.position,Vector3.Up * dir.normalized, Color.Green);
if(Physics.Raycast(transform.position,dir,1.0f,LayerMask.GetMask("Block")))
//if (physics.Raycast(transform.position,Vector3.Up * 1.0f, LayerMask.GetMask("Block")))
{_state = PlayerState.Idle;
return; }
transform.position += dir.normalized * moveDist;
transform.rotation = Quaternion.Slerp(transform.rotation,
Quaternion.LookRotation(dir), 20 * Time.deltaTime);
} // 애니메이션
Animator anim = GetComponent<Animator>();
// 현재 게임 상태에 대한 정보를 넘겨준다 anim.SetFloat("speed", _speed); }
void UpdateIdle()
{// 애니메이션
Animator anim = GetComponent<Animator>();
anim.SetFloat("speed", 0); }
void Update()
{ switch (_state)
{ case
PlayerState.Die:UpdateDie();
break;
case PlayerState.Moving: UpdateMoving();
break;
case PlayerState.Idle: UpdateIdle();
break; }
}
void OnMouseClicked(Define.MouseEvent evt)
{ if (_state == PlayerState.Die)
return;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition)
;Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100.0f, LayerMask.GetMask("Block"))) {
_destPos = hit.point;_state = PlayerState.Moving; }
}
}
이부분 작성 할때 vector3 작성부분에서 system 에러가 떠서 찾아보다가..
이부분이 계속 에러가 떠서 찾다가 도저히 해결방법을 몰라서..
using system 에러같은데.. vector3가 문제 인가 싶어서 그냥 dir 로 수정해도 에러가 뜨는건 마찬가지고.. 딱 그전(14:40쯤) 그때 코드 수정 할때 부터 에러가 뜨더라구요.. 구글링해보고 찾아봐도 답이 안나와서 여쭤봅니다..ㅠㅠ
답변 4
0
방법을 찾았습니다ㅠㅠ.. 어쩔수없이. VS code말고 스튜디오로 가서 수정다하고 다시 코드로 옮겨 왔네요..ㅜㅜ
기존using 문구는 다 주석 처리해서 반복적으로 안나타나게끔 하고 수정 하니 에러문구 사라졌습니다ㅠㅠ
감사합니다
0
몇번 지우고 다시 쓰고 해보니
반복되는 오류가 계속 나오네요..
dir 이나 Vector3 또는 physics가 컨테스트에 없다고 나오거나
이문구 수정하면 다시 using 문구를 지워달라고 하고..
그냥..처음부터 다시 해보겠습니다..ㅠㅠㅠㅠ
무한 반복이네요.. ㅠㅠ
0
빠른 답변 감사합니다
그 문구를 지우고 나니 1개였던 에러가 다시 4개가 되었습니다...ㅠㅠ
먼가.. 해결하고나니 더 생기는 느낌인데.. 찾아 보고 안되면 다시 첨부터 해봐야 겠습니다..ㅠㅠ 알려주셔서 감사합니다
collab 에러는 알려주셔서 해결했습니다!!
0
에러 메시지 그대로
using System.Reflection.PotableExecutable; 가 없다는데
이를 추가해주신 특별한 이유가 없다면 삭제해주시기 바랍니다.
불필요한 using을 다 삭제하고 다시 확인해보시기 바랍니다.