void Update() { if (Input.GetMouseButtonDown(0)) { if (gunState == State.Empty) //눌렀는데 empty거나 장전 누르면 { print("장전시도"); checkReload(); } if (gunState == State.Ready) { magAmmo--; if (magAmmo <= 0) { gunState = State.Empty; print("총알 다씀!"); } //레이를 생성한 후 발사될 위치와 진행 방향을 설정한다. Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward); //레이가 부딪힌 대상의 정보를 저장할 변수를 생성한다. RaycastHit hitInfo = new RaycastHit(); if (Physics.Raycast(ray, out hitInfo)) { // 만일 레이에 부딪힌 대상의 레이어가 "Enemy"라면 데미지 함수를 실행한다. **7주차 추가 부분 if (hitInfo.transform.gameObject.layer == LayerMask.NameToLayer("Enemy")) { EFSM eFSM = hitInfo.transform.GetComponent <EFSM>(); eFSM.HitEnemy(weaponPower); //weaponPower만큼 Enemy의 체력 hp가 감소 ->ESFM HitEnemy함수 hitpower매개변수로 들어감 } // 그렇지 않다면, 레이에 부딪힌 지점에 피격 이펙트를 플레이한다. (즉 적이 아닐때) else { // 피격 이펙트의 위치를 레이가 부딪힌 지점으로 이동시킨다. bulletEffect.transform.position = hitInfo.point; // 피격 이펙트의 forward 방향을 레이가 부딪힌 지점의 법선 벡터와 일치시킨다. bulletEffect.transform.forward = hitInfo.normal; // 피격 이펙트를 플레이한다. ps.Play(); } } } } if (Input.GetKeyDown(KeyCode.R)) { checkReload(); } }
void Update() { //마우스 오른쪽 버튼을 누르면 시선이 바라보는 방향으로 수류탄을 던지고 싶다. //.1 마우스 오른쪽 버튼을 입력받는다. if (Input.GetMouseButtonDown(1)) { GameObject bomb = Instantiate(bombFactory); bomb.transform.position = firePosition.transform.position; //수류탄 오브젝트의 Rigidboby컴포넌트를 가져온다. Rigidbody rb = bomb.GetComponent <Rigidbody>(); //카메라의 정면방향으로 수류탄에 물리적인 힘을 가한다. rb.AddForce(Camera.main.transform.forward * throwPower, ForceMode.Impulse); //던지는 방향, 순간적인 힘을 가하여 던지겠다. } //마우스 왼쪽 버튼을 누르면 시선이 바라보는 방향으로 총을 발사하고 싶다. //마우스 왼쪽 버튼을 입력받는다. if (Input.GetMouseButtonDown(0)) { //레이를 생성한 후 발사될 위치와 진행 방향을 설정한다. Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward); //레이가 부딪힌 대상의 정보를 저장할 변수를 생성한다. RaycastHit hitInfo = new RaycastHit(); if (Physics.Raycast(ray, out hitInfo)) { // 만일 레이에 부딪힌 대상의 레이어가 "Enemy"라면 데미지 함수를 실행한다. **7주차 추가 부분 if (hitInfo.transform.gameObject.layer == LayerMask.NameToLayer("Enemy")) { EFSM eFSM = hitInfo.transform.GetComponent <EFSM>(); eFSM.HitEnemy(weaponPower); //weaponPower만큼 Enemy의 체력 hp가 감소 ->ESFM HitEnemy함수 hitpower매개변수로 들어감 } // 그렇지 않다면, 레이에 부딪힌 지점에 피격 이펙트를 플레이한다. (즉 적이 아닐때) else { // 피격 이펙트의 위치를 레이가 부딪힌 지점으로 이동시킨다. bulletEffect.transform.position = hitInfo.point; // 피격 이펙트의 forward 방향을 레이가 부딪힌 지점의 법선 벡터와 일치시킨다. bulletEffect.transform.forward = hitInfo.normal; // 피격 이펙트를 플레이한다. ps.Play(); } } } }