inflearn logo
강의

Course

Instructor

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

movement

raycast쪽..질문좀 드립니다..

576

ekrkwu11

9 asked

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쯤) 그때 코드 수정 할때 부터 에러가 뜨더라구요.. 구글링해보고 찾아봐도 답이 안나와서 여쭤봅니다..ㅠㅠ

C# unity

Answer 4

0

ekrkwu11

방법을 찾았습니다ㅠㅠ.. 어쩔수없이. VS code말고 스튜디오로 가서 수정다하고 다시 코드로 옮겨 왔네요..ㅜㅜ

기존using 문구는 다 주석 처리해서 반복적으로 안나타나게끔 하고 수정 하니 에러문구 사라졌습니다ㅠㅠ

 

감사합니다

0

ekrkwu11

몇번 지우고 다시 쓰고 해보니

반복되는 오류가 계속 나오네요..

 

dir 이나 Vector3 또는 physics가 컨테스트에 없다고 나오거나

이문구 수정하면 다시 using 문구를 지워달라고 하고..

그냥..처음부터 다시 해보겠습니다..ㅠㅠㅠㅠ

 

무한 반복이네요.. ㅠㅠ

0

ekrkwu11

빠른 답변 감사합니다

그 문구를 지우고 나니 1개였던 에러가 다시 4개가 되었습니다...ㅠㅠ

먼가.. 해결하고나니 더 생기는 느낌인데.. 찾아 보고 안되면 다시 첨부터 해봐야 겠습니다..ㅠㅠ 알려주셔서 감사합니다

 

collab 에러는 알려주셔서 해결했습니다!!

1

Rookiss

불필요한 using을 다 삭제하고 다시 확인해보시기 바랍니다.

0

Rookiss

에러 메시지 그대로
using System.Reflection.PotableExecutable; 가 없다는데
이를 추가해주신 특별한 이유가 없다면 삭제해주시기 바랍니다.

 

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

0

24

2

픽셀 좌표 스크린 좌표

0

27

0

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

0

67

2

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

0

79

1

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

0

81

1

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

0

72

1

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

0

76

1

달리기 애니메이션 에러

0

85

2

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

0

63

1

GetKey 오류

0

109

2

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

0

104

1

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

0

167

6

Animation blending 파라미터 계산

0

65

1

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

0

94

3

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

0

85

2

질문있습니다

0

142

2

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

0

140

3

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

0

85

2

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

0

133

2

유니티6 NavMesh 안되는분들

1

174

1

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

7

524

1

GetComponent<Poolable> 질문드립니다.

0

99

2

UI 불러오지 못함

0

116

2

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

0

152

2