재장전을 하고나면 정조준 값은 똑같은데 위치가 바꿔저요
359
dydybest
작성한 질문수 15
0
전체 코드:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GunController : MonoBehaviour
{
[SerializeField]
private Gun currentGun;
private float currentFireRate;
private bool isReload = false;
private bool isFineSightMode = false;
[SerializeField]
private Vector3 originPos;
private AudioSource audioSource;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
// Update is called once per frame
void Update()
{
GunFireRateCalc();
TryFire();
TryReload();
TryFineSight();
}
private void GunFireRateCalc()
{
if(currentFireRate > 0)
currentFireRate -= Time.deltaTime;
}
private void TryFire()
{
if (Input.GetButton("Fire1") && currentFireRate <= 0 && !isReload)
{
Fire();
}
}
private void Fire()
{
if(!isReload)
{
if(currentGun.currentBulletCount > 0)
Shoot();
else
StartCoroutine(ReloadCoroutine());
}
}
private void Shoot()
{
currentGun.currentBulletCount--;
currentFireRate = currentGun.fireRate;
PlaySE(currentGun.fire_Sound);
currentGun.muzzleFlash.Play();
Debug.Log("총알 발사함");
}
private void TryReload()
{
if(Input.GetKeyDown(KeyCode.R) && !isReload && currentGun.currentBulletCount < currentGun.reloadBulletCount)
{
StartCoroutine(ReloadCoroutine());
}
}
IEnumerator ReloadCoroutine()
{
if(currentGun.carryBulletCount > 0)
{
isReload = true;
currentGun.anim.SetTrigger("reload");
currentGun.carryBulletCount += currentGun.currentBulletCount;
currentGun.currentBulletCount = 0;
yield return new WaitForSeconds(currentGun.reloadTime);
if(currentGun.carryBulletCount >= currentGun.reloadBulletCount)
{
currentGun.currentBulletCount = currentGun.reloadBulletCount;
currentGun.carryBulletCount -= currentGun.reloadBulletCount;
}
else
{
currentGun.currentBulletCount = currentGun.carryBulletCount;
currentGun.carryBulletCount = 0;
}
isReload = false;
}
else
{
Debug.Log("소유한 총알이 없습니다.");
}
}
private void TryFineSight()
{
if(Input.GetButtonDown("Fire2"))
{
FineSight();
}
}
private void FineSight()
{
isFineSightMode = !isFineSightMode;
currentGun.anim.SetBool("FineSightMode", isFineSightMode);
if(isFineSightMode)
{
StopAllCoroutines();
StartCoroutine(fineSightActivateCoroutine());
}
else
{
StopAllCoroutines();
StartCoroutine(fineSightDeactivateCoroutine());
}
}
IEnumerator fineSightActivateCoroutine()
{
while(currentGun.transform.localPosition != currentGun.fineSightOriginPos)
{
currentGun.transform.localPosition = Vector3.Lerp(currentGun.transform.localPosition, currentGun.fineSightOriginPos, 0.2f);
yield return null;
}
}
IEnumerator fineSightDeactivateCoroutine()
{
while(currentGun.transform.localPosition != originPos)
{
currentGun.transform.localPosition = Vector3.Lerp(currentGun.transform.localPosition, originPos, 0.2f);
yield return null;
}
}
private void PlaySE(AudioClip _clip)
{
audioSource.clip = _clip;
audioSource.Play();
}
}
답변 0
코드 파일
0
100
1
currentFireRate 질문
0
104
0
thePlayerController의 값이 갑자기 null로 바뀌는 현상이 발생합니다
0
222
1
인벤토리 끄고 퀵슬롯 아이템 드래그앤 드랍시 공격
0
256
1
멀티로 개발하고 싶으면 어떤것을 알아야할까요?
0
359
1
유니티 3d 터레인 브러쉬 문제
0
527
1
moveposition 문제
0
360
2
navigation bake한 후 오류
0
290
1
무기 교체 오류
0
521
1
gun애니메이션이 손만 작동하고 총은 가만히 있어요
0
313
1
34:49 내용 생략 부분
0
500
0
고화질 서비스 안되나요..
0
371
1
바닥에 있는 아이템이 사라지지 않습니다
0
334
1
전체 프로젝트 파일 받을 수 있을까요?
0
412
1
질문 있습니다
0
285
0
움직이며 정조준을 하니까 총의 포지션 값이 이상해지네요;; 어떻게 해결해야되나요?
0
240
0
Quaternion 값은 왜 곱하나요?
0
312
0
Hand를 main camera에 넣으면 오류가 생깁니다.
0
242
0
웨폰 매니저 강의중 똑같은 내용 영상 중복됨
0
266
0
공격성을 띄고있는 동물이 죽어도 계속 쫓아옵니다.
0
322
1
시야각 구현이 제대로 안되는데 어떻게 해결해야하나요.
0
596
1
크로스헤어 문제
1
743
7
효과음 넣을 때 오류
0
446
1
강의 잘 듣고 있는데 질문거리가 많네요 ㅠㅠ
0
191
0





