본문 바로가기

C#

3D 쿼터뷰 액션게임 - 드랍무기 입수 드랍무기 입수를 위해 OnTriggerStay 와 OnTriggerExit 를 이용해서 오브젝트 인식부터 진행합니다. 플레이어 주변의 오브젝트 tag가 Weapon 일때, 지정한 변수에 오브젝트의 정보를 변수에 담아주고 오브젝트 범위를 벗어나면 지정한 변수에 담겨져있던 오브젝트의 정보를 null 로 비워줍니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float speed; float hAxis; float vAxis; bool wDown; bool jDown; public bool isJump; bool isDodge; Ve.. 더보기
3D 쿼터뷰 액션게임 - 플레이어 회피기 회피기 함수이름은 Dodge 를 사용해주었고 점프 중, 회피기가 나가지않도록 제약조건 != 을 걸어주었습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float speed; float hAxis; float vAxis; bool wDown; bool jDown; public bool isJump; bool isDodge; Vector3 moveVec; Vector3 dodgeVec; Rigidbody rigid; Animator anim; void Awake() { rigid = GetComponent(); anim = Ge.. 더보기
3D 쿼터뷰 액션게임 - 플레이어 점프 점프 구현을 하고나서 무한 점프가 되지 않도록 해야합니다. 지정해주었던 isJump 파라미터가 false 이고 점프키 입력을 받았을때, Vector3.up 으로 Force 를 주는 if문을 만들고 true로 바꿔주면 됩니다. 그리고 다시 isJump 를 false로 만들어줘야하니까 새로운 if문을 만들고 OnCollisionEnter 함수를 씁니다. tag == "Floor" 오브젝트에 Enter 하게 되면 isJump가 false가 되도록 OnCollisionEnter 함수 아래에 if문으로 제작하면 됩니다. 저는 OnCollisionStay 와 Exit 를 이용해서 더 확실한 방법으로 점프 인식을 하도록 바꾸었습니다. using System.Collections; using System.Collect.. 더보기
3D 쿼터뷰 액션게임 - 코드 정리 player.cs 의 스크립트를 정리하자! 아래 스크립트는 정리 전의 스크립트 파일입니다. public class Player : MonoBehaviour { public float speed; float hAxis; float vAxis; bool wDown; Vector3 moveVec; Animator anim; void Awake(){ anim = GetComponentInChildren(); } void Update(){ hAxis = Input.GetAxisRaw("Horizontal"); vAxis = Input.GetAxisRaw("Vertical"); wDown = Input.GetButton("Walk"); moveVec = new Vector3(hAxis, 0, vAxis).norma.. 더보기
3D 쿼터뷰 액션게임 - 플레이어 이동 애니메이션, 카메라 이동 애니메이션 적용 생성된 animator 를 하이어라키에서 플레이어 프리팹의 자식 오브젝트의 인스펙터에 component로 Add. animator 창을 열어서 idle, Walk, Run 애니메이션을 추가하고 transition 으로 연결하기. transition 사이를 조정해줄 파라미터(조건) isWalk, isRun 생성. 각 transition에 맞는 파라미터를 각 transition에 추가. player.cs 작성 SetBool //벡터이동 //삼항연산자를 사용해서 걷기wDown true면 걷기 속도-false면 Run속도 transform.position += moveVec * speed * (wDown ? 0.3f : 1f) * Time.deltaTime; 플레이어가 지정된 키 입력에 따라 방.. 더보기
3D 쿼터뷰 액션게임 - 플레이어 이동 플레이어의 기본 이동 구현 플레이어 프리팹을 씬 뷰에 넣고 rigidbody, capsule collider, player.cs 컴포넌트를 Add. 이동 중, 관성에 의한 넘어짐을 없애기 위해 rigidbody의 Freeze rotation X, Z 축을 체크. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float speed; float hAxis; float vAxis; Vector3 moveVec; void Start() { } void Update() { hAxis = Input.GetAxisRaw("Horizontal").. 더보기
unity Vector 수학( 내적 Dot, 외적 Cross ) 유니티를 위해 벡터를 반드시 이해해야합니다. 2D 벡터는 X, Y로 이루어져 있씁니다. 평면 도형 3D 벡터는 X,Y,Z 로 이루어져 있습니다. 큐브 유니티의 XYZ 체계는 아래의 손 사진처럼 왼손 엄지와 검지를 펼치면 알 수 있습니다. 내적은 두 벡터를 취하며 그로부터 단일 값인 스칼라를 산출합니다. 두 벡터 A와 B의 내적을 구하기 위해 각 벡터의 X,Y,Z를 각각 곱하여 합산합니다. 이 곱셈을 통해 두 벡터에 대한 정보를 알 수 있습니다. 지정된 벡터 2개의 내적이 0 이면 두 벡터는 직교합니다. 하지만 위 사진의 벡터 A, B의 내적은6. 0과 같지 않으므로 두 벡터는 직교하지 않습니다. 만약 벡터 A가 0,7,0 이였다면? 내적이 0이므로 두 벡터는 서로 직교하겠죠. 위 사진 속 두 벡터는 지금.. 더보기
unity Update FixedUpdate Update FixedUpdate Update 함수는 사용중인 모든 스크립트에서 프레임당 1번씩 호출됩니다. 그렇기때문에 정기적인 조정이 필요한 모든 것이 Update 함수에서 이루어지죠. using UnityEngine; using System.Collections; public class UpdateAndFixedUpdate : MonoBehaviour { void FixedUpdate () { Debug.Log("FixedUpdate time :" + Time.deltaTime); //일정한 타임라인따라 호출됨. //호출과 호출 사이의 시간이 동일함. //fixedUpdate가 호출된 직후 필요한 모든 물리적 계산들이 진행됨. //즉, 물리적 오브젝트에 영향을 미치는 요소는 FixedUpdate 함.. 더보기