[Unity] Project. DayLight_11

Lingtea_luv·2025년 6월 29일

Project

목록 보기
37/38
post-thumbnail

Project. DayLight


작업 완료 기능

  1. 아이템 더블 클릭 기능 구현
  2. 인벤토리 활성화 시 다른 기능 lock
  3. 플레이어 공격속도 모션 연동

작업 중 기능

member1

<빌드 이슈 수정>
1. 맵뚫 버그 → physics - Layer Collision Matrix 설정(주말 이후 강사 피드백)

  • 무기를 들었을 때 → player - weapon 충돌x
  • 공격하면서 이동 → building - weapon 충돌x → 이게 맞나?
  • 퀵슬롯 바꾸면서 이동 → player - weapon 충돌x
  • 백점프(뒤로 점프) → player collider 수정(엉덩이 collider 추가?)
  1. 무한 점프 → 점프 진입, 해제 조건 확인
  2. 캐릭터 끼임 현상(점프 lock) → 점프 진입, 해제 조건 확인
  3. 플레이어 앞 뒤로 미끄러지는 현상 수정 → 모션의 한계 → Blend Tree활용
  4. Ctrl 웅크리기 / shift 달리기 기능 추가
  5. 문열기 키 변경 KeyCode E -> F
    <기능 구현>
  6. 낙뎀 낙하거리 비례, 일정 높이 이상에서는 즉사
  7. 시간 시스템 적용 : 인 게임 하루 = 플레이 10분 / 6-18 낮 18 - 6 밤 (라이트 적용)
  8. 이동 시 소음 발생(웅크리기, 기본, 달리기 차등 적용) -> 상태에 따른 콜라이더 크기(반지름) 변경

member2

<빌드 이슈 수정>
1. 빌드 파일에서 외곽선 출력이 안되는 현상
2. 아이템 공격시 퀵슬롯 전환 불가능하도록 막기
<기능 구현>
1. 아이템 식별 도중 피격 시, 식별 초기화
2. 사다리 튜토리얼 이후 자경단 방향 카메라 컷씬 추가 → 컷씬(시네마틱)
3. URP 효과(volume) => 밤에는 가시거리가 좁아지고 안개가 깔린 듯한 음산한 느낌

member3

<빌드 이슈 수정>
1. 총, 방패 생성 위치, 방향 조정
<기능 구현>
1. 투척 아이템 : 마우스 클릭한 시간에 따라 비거리 달라지도록 구현
2. 방패 아이템 : 기능 구현, 피격될 때마다 내구도 차감
3. 투척 아이템 : 화염병
4. R키로 총 재장전 기능 구현

member4

<빌드 이슈 수정>
1. 몬스터 빌드 버그 수정
2. 몬스터 프리팹 생성, 기획분들께 전달(배치 안내사항)
<기능 구현>
1. 원거리 좀비 구현
2. 기획 초안 24p~30p 확인, 기획안 구현
3. 몬스터 파라미터 적용
4. 몬스터 탐지(시각, 청각)
...

member5

<빌드 이슈 수정>
1. 제작 탭에서 특정 레시피 클릭시 결과 아이템 설명 텍스트 아래에 출력
<기능 구현>
1. 랜덤 드랍 테이블 연동, 테스트 (CSV 파일)
2. 달리기 초당 5% 스태미나 소모, 기본 초당 7% 회복, 공격시 3% 소모, 점프 스태미나 소모
3. 병합, 빌드2 파일 생성, 공유

공용

  1. 투명벽 유발 프리팹 확인 -> 기록실에 해당 프리팹 이름 작성(SM_Prop_Powerpole_Preset_03)
  2. 루팅 아이템, 사다리, 문 처리 구조 단순화, 프리팹화

공유 코드

이번에 공유하려는 코드는 플레이어의 공격 속도와 공격 모션 속도, 쿨타임을 연동하는 코드이다. 특정 애니메이션 클립의 재생 속도를 변환하는 상황이 꽤나 자주 나오게 될텐데 다음 코드를 참고하면 좋을 것 같다.

이때 중요한 것은 인스펙터 상에서 clip의 SpeedMultiplier값을 설정하여 재생 속도를 런타임 중에 변경할 수 있는데, SpeedMultiplier는 애니메이터의 파라미터의 값으로 설정이 가능하기 때문에 float 파라미터 하나(ClipSpeed)를 설정해주었다.

public class PlayerAttack : MonoBehaviour
{
	[Header("Reference")]
	[SerializeField] private Animator _animator;
    [SerializeField] private AnimationClip _attackClip;
	
    // 중복 공격 방지 플래그
    private bool _canAttack = true;
    
	private IEnumerator MeleeAttackSequence()
	{
  	    _canAttack = false;
    
    	// 공격 속도 캐싱
		float AtkSpeed = _playerProperty.AtkSpeed.Value;
    
    	// 공격 모션 속도 : 플레이어 공격 속도 비례 설정
        // float 파라미터 값 설정 -> SpeedMultiplier에 적용
        _animator.SetFloat("ClipSpeed", AtkSpeed);
        
        // 공격 모션 재생
 	    _animator.SetTrigger("Attack");
  	    
		// 공격 모션 기본 재생 시간
 	    float clipLength = _attackClip.length;
        
        // 플레이어 공격 속도에 반비례하는 쿨타임 값 설정
  	    float coolTime = 1 / AtkSpeed;
		
        // 공격과 공격 사이 딜레이 설정
        // 실제 모션 재생 시간 + 공격 쿨타임
        float delay = clipLength / AtkSpeed + coolTime
        
        // 해당 시간이 지나야 다시 공격 가능
   	 	yield return new WaitForSeconds(delay);

    	_canAttack = true;
	}
}    
profile
뚠뚠뚠뚠

0개의 댓글