4/28 ~ 5/4
5/6 ~ 5/11
*해당 프로젝트에 기여한 날만 작성했습니다.
이전 일지에 말했듯이 맡고 있던 부분이 사라진 위기에 처해
해당 주( 4/28 ~ 5/4 )는 진행 사항이 없습니다.
이 경우 내용이 너무 적기 때문에
4/28 ~ 5/4 주에 더불어 5/6 ~ 5/11까지 작성하도록 하겠습니다.
해당 주( 5/6 ~ 5/11 )는 물고기 기믹을 맡아서 했습니다.
*5/2 ~ 5/8
5/2, 5/7, 5/8
회의만 진행 했습니다.*5/3 ~ 5/6 진행 사항이 없습니다.
5/9
새로 맡게 된 물고기 기믹을 만들기 위해 세팅을 하고
이전에 해당 기믹을 맡았던 팀원의 코드를 긁어와 복붙 했습니다.
*복붙 한 코드 변수만
//코드 내용은 간단히 물고기가 플레이어를 감지하면 반대 방향으로 이동
//그렇지 않다면 지정 시간 마다 랜덤 방향으로 이동
using UnityEngine;
namespace KLM._01.Code.Fish
{
public class FishMove : MonoBehaviour
{
[Header("탐지 범위")]
[SerializeField] private float detectionRadius = 5f; // 플레이어 감지 반경
[SerializeField] private Transform player; // 플레이어의 Transform
[Header("이동 속도")]
[SerializeField] private float idleSpeed = 1.5f; // 유휴 상태 이동 속도
[SerializeField] private float escapeSpeed = 4f; // 도망칠 때 이동 속도
[Header("회전 속도")]
[SerializeField] private float rotationSpeed = 3f; // 회전 속도
[Header("도망 설정")]
[SerializeField] private float escapeDuration = 2.5f; // 도망 지속 시간
[SerializeField] private float escapeCooldown = 1f; // 도망 후 대기 시간
[Header("옆으로 보기 설정")]
[SerializeField] private float sideLookAngle = 90f; // 이동 방향 대비 fish가 바라볼 옆쪽 각도 (예: 90는 오른쪽, -90은 왼쪽)
[Header("유휴 상태 방황 설정")]
[SerializeField] private float idleDirectionChangeInterval = 3f; // 유휴 상태에서 방향 전환 간격 (초)
private Vector3 _currentTargetDirection; // 현재 이동 방향 (이동은 이 벡터에 따름)
private bool isEscaping = false; // 도망 상태 여부
private float escapeTimer = 0f; // 도망 지속 타이머
private float cooldownTimer = 0f; // 도망 쿨다운 타이머
private float idleTimer = 0f; // 유휴 상태에서 방향 전환을 위한 타이머
*물고기 기믹 설명
물고기 기믹에 대해 설명하자면
NPC가 특정 색의 물고기를 잡아 달라고 퀘스트를 주면
주인공은 배를 타고 물고기가 있는 배를 타고 돌아다닙니다.
이 배 밑에는 그물이 있고, 물고기가 이 그물에 닿으면 잡히게 됩니다.
만약 NPC가 잡아 달라한 물고기의 색과 다르다면 그 물고기는 NPC에게 전해 줄 때 풀려나게 되며
올바르다면 잡아야 하는 물고기 수에서 차감됩니다.
이때 바다에 있는 물고기는 대략 30마리,
잡아야 하는 물고기는 10마리,
그물에 보관할 수 있는 최대 물고기 수는 6마리입니다.
5/10
저번 복붙 했던 코드를 읽고 약간 수정을 했습니다.
(+ 주석 달기)


파란색 영역은 감지 시 도망가는 영역, 노란색 영역은 감지 시 잡히는 영역입니다.
기존 스크립트를 기반으로 레이어 감지를 도망가는 영역, 잡히는 영역으로 더 넓히고,
이전 코드들도 지우는 등 크게 수정했습니다.
5/11
물고기 종류(색)에 따라 색이 변환되게 하도록 하였으나 아직 메테리얼(텍스처)이 없는 관계로 주석 처리 해두었습니다.
*물고기의 종류
물고기의 종류는 빠른, 순둥, 기본, 반항 물고기와 또 색 종류로 빨강, 파랑, 노랑이 있고
각 종류에 따라 특징이 있습니다.
빠른 : 플레이어의 배보다 살짝 빠르게 도망칩니다.
순둥 : 천천히 느릿하게 이동합니다.
기본 : 모든 물고기의 기본 물고기로 배가 가까이 오면 반대편으로 도망갑니다.
반항 : 몰고 있을 때 갑자기 반대편이 아닌 옆으로 샙니다.

초반에 물고기의 종류(특징)를 정해주고, 그에 따라 속도등을 스위치식을 통해 정해 주었습니다.
스크립트의 전체적인 설명을 하자면

처음 시작할 때 물고기의 종류를 정해주고

초반 이동 방향을 정해 줍니다.
(idleTimer 동안 이동)


노란색 영역에 걸렸다면 움직이지 않고, (isNet)
파란색 영역에 걸렸고 도망 쿨 다운이라면 Move를 통해 도망갈 방향을 정하게 됩니다.

이때 물고기의 종류가 반항이라면 30%의 확률로 올바르게(반대 방향) 도망가고, 아니면 플레이어에게 돌진을 하게 됩니다.
또 자연스럽게 도망가도록 완벽히 반대가 아니라 랜덤 각도(-20 ~ 20)를 더해주었습니다.

다시 update로 돌아가서 파란 영역에 걸렸다면 (무조건) Escape를 실행합니다.
아까 위에서 정해준 방향이 있으니 MoveAndRotate를 통해 (더 빠르게) 이동해 줍니다.
만약 쿨 다운 되었다면 도망 상태를 멈추고 시간을 지정한 시간으로 돌려놓습니다. (여기선 1초로 지정)

이동하기로 한 길이가 너무 짧다면 이동하지 않습니다.
moveDir(노멀라이즈)를 통해 가는 방향을 정하고 속도에 따라 이동해 줍니다.
또 LookRotation를 통해 이동에 따라 자연스럽게 보는 방향을 따라가도록 했습니다.
안타깝게도 물고기 모델의 방향이 잘못되어 있어서 보기에는 자연스럽게 visualRotation를 이용해 똑바로 보는 것처럼 보이도록 했습니다.
드디어 도망에 대한 설명은 끝났습니다.
다시 update로 돌아가보면 도망이 아닐 때

시간을 줄이고 0에 도달하면 다시 갈 곳을 정해 주고
0에 도달하지 않을 때는 아까 그 함수를 이용해 움직입니다.

감지는 대충 구 형태로 (이전 파란색, 노란색 영역) 감지 범위를 만들고 감지했는지 확인하는 것으로 간단히 만들었습니다.
그리고 이것을 기즈모로 보이도록 했습니다.
나중에 알게 된 사실인데 OnDrawGizoms 함수를 사용할 시 '씬'이 보일 때만 실행된다기에 나중에 업데이트에 옮겨 두는 둥 조치를 취해야 할 것 같습니다.
(그러니까 즉 '게임'만 있다면 실행을 안 한다는 소리)
이렇게 물고기에 대한 스크립트를 작성했습니다.
사실 5/11은 물고기 랜덤 이동방향, 이동만 작성했고 도망관련해서는 작성하지 않았습니다. (원본 코드)
그러나 이전 기록이 남아있지 않으며, 여러 곳에서 이동, 도망 이런 식으로 파트를 나누면 지저분해 보일 것을 우려해
이곳에 정리하게 되었습니다.
일지
이전 일지 > https://neeeeding.tistory.com/27
네오위즈 - 개발 일지 (3) - 회의 4/21 ~ 4/27
4/21 ~ 4/27*해당 프로젝트에 기여한 날만 작성 했습니다. 해당 주는 회의만 진행 했습니다. *4/21 ~ 4/2더보기4/21회의를 위해 스토리 라인을 작성하고,회의를 진행했습니다.4/22이어서 스토리 라인과
neeeeding.tistory.com
다음 일지 > https://neeeeding.tistory.com/30
네오위즈 - 개발 일지 (5) - 그물 배 5/12 ~ 5/18
5/12 ~ 5/18*해당 프로젝트에 기여한 날만 작성 했습니다. 해당 주에서는 그물 배와 물고기에 대해 제작하였고다른 기믹의 기획을 보충했습니다.그리고 오류와 싸웠습니다. *5/12 ~ 5/14더보기닫기5/13
neeeeding.tistory.com
'네오위즈' 카테고리의 다른 글
| 네오위즈 - 개발 일지 (6) - 유리 구슬(1) 5/19 ~ 5/25 (1) | 2025.07.09 |
|---|---|
| 네오위즈 - 개발 일지 (5) - 그물 배 5/12 ~ 5/18 (1) | 2025.07.08 |
| 네오위즈 - 개발 일지 (3) - 회의 4/21 ~ 4/27 (0) | 2025.07.08 |
| 네오위즈 - 개발 일지 (2) - 지우기 4/14 ~ 4/20 (4) | 2025.07.08 |
| 네오위즈 - 개발 일지 (1) - 미니 배 4/8 ~ 4/13 (2) | 2025.07.08 |