서론
범부.
범부는 일반인이라는 주술회전 밈이라는데 팀원이 팀명을 정해주었다. 오늘 처음 배운 말인데 이제 많이 쓸 것 같다.
잘하는 갓반인들이 많아서 전공자인 나따위는 범부라고.
전공자인 내가 조건을 걸고 팀장을 하게 되었다.
그 조건은 발표 제외권....... 물론 돌아가면서 한다면 한번은 걸리겠지만..!
무대공포증이 있어서 팀플 발표를 망칠바에는 그게 나을 것 같아서 먼저 하겠다고 했다.
계획서도 야무지게 작성해주고 목요일까지 주어졌던 과제를 분배했다.
다들 비전공자분들인데도 열심히 참여해주셔서 내가 너무 편협한 관점으로 바라봤구나 생각했다.
내가 더 못할텐데.. 이런 바보..
본론
기능은 사전캠프때 주어졌던 4주차의 게임을 이용하여 추가로 기능을 구현해보는 것이다.
일단은 Basic으로 구분한것들에서 1개씩 분배했고 Challeange에서는 하고싶은 사람이 그냥 하나씩 구현하는걸로 하는중이다.
나는
1. ⭐ 필수 ⭐ 매칭 성공 시, 팀원의 이름 표시 / 실패 시 실패 표시 (종료 시 끝! 나타나는 것처럼)
2. 실패할 때 마다 시간 감소 효과 넣어보기
GamaManager.cs - 내가 수정 한 부분만
// 생략
.
.
.
Text endText; //endText 컴포넌트를 받을 변수
public Text falseTryTxt; // 시간 추가 텍스트 변수
void Start()
{
// endText 컴포넌트 불러옴
endText = endTxt.GetComponent<Text>();
falseTryTxt = falseTryTxt.GetComponent<Text>();
}
void Update()
{
if (time >= 30.0f)
{
// endTxt의 기본을 실패로 설정하고 매칭 실패시 실패가 나오게 한다.
endTxt.SetActive(true);
Time.timeScale = 0.0f;
}
}
public void Matched()
{
if(firstCard.idx == secondCard.idx)
{
if(cardCount == 0)
{
//매칭 성공 시, 팀원의 이름 표시 / 실패 시 실패 표시 (종료 시 끝! 나타나는 것처럼)
endText.text = "<팀장>\n유수정\n<팀원>\n이름\n이름\n이름\n이름";
endText.fontSize = 80;
endTxt.SetActive(true);
Time.timeScale = 0.0f;
}
}
else
{
firstCard.CloseCard();
secondCard.CloseCard();
StartCoroutine(FalseTryTime(falseTryTxt, 0.5f)); //0.5f는 투명해지고 비활성화 될때까지의 시간을 보내는 매개변수
time += 1.0f;
Debug.Log("맞추기 실패 1초 추가");
}
// 생략
.
.
.
// 시간 추가 효과 함수(투명해지기)
IEnumerator FalseTryTime(Text text, float fadeTime)
{
text.gameObject.SetActive(true);
Color originalColor = text.color; // 텍스트의 초기 색상
float timer = 0f;
while (timer < fadeTime)
{
timer += Time.deltaTime;
float alpha = Mathf.Lerp(1f, 0f, timer / fadeTime); // Lerp는 선형보간 함수 (중간값을 계산하여 부드러운 이동을 만들어냄)
text.color = new Color(originalColor.r, originalColor.g, originalColor.b, alpha); // r,g,b색상은 기존의 색상을 이용하지만 투명도만 조절하여 점점 투명하게 만든다.
yield return null;
}
text.gameObject.SetActive(false); // 반복문이 끝났으면 비활성화
}
}
3. 나만의 카드 등장 효과 연출하기(파도타기 효과로 등장, 화면 밖에서 나선형으로 날아오는 등장 등)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class Board : MonoBehaviour
{
public GameObject card;
void Start()
{
int[] arr = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
arr = arr.OrderBy(x => Random.Range(0f, 7f)).ToArray();
float flyInDuration = 0.1f; // 카드가 화면 안으로 날아오는 시간
StartCoroutine(CardAnimation(arr, flyInDuration));
}
IEnumerator CardAnimation(int[] arr, float flyInDuration)
{
List<Vector2> targetPositions = new List<Vector2>();
for (int i = 0; i < 16; i++)
{
float x = (i % 4) * 1.4f - 2.1f;
float y = (i / 4) * 1.4f - 3.0f;
targetPositions.Add(new Vector2(x, y));
}
Shuffle(targetPositions); // 목표 위치를 섞음
for (int i = 0; i < 16; i++)
{
GameObject go = Instantiate(card, this.transform);
Vector2 targetPos = targetPositions[i]; // 무작위 목표 위치
// 카드가 화면 밖에서 시작하고 목표 위치로 날아오는 애니메이션(이건 공부 필요함)
float elapsedTime = 0f;
while (elapsedTime < flyInDuration)
{
elapsedTime += Time.deltaTime;
float t = Mathf.Clamp01(elapsedTime / flyInDuration);
go.transform.position = Vector2.Lerp(targetPos + new Vector2(Random.Range(-200f, 200f), Random.Range(-300f, 300f)), targetPos, t);
yield return null;
}
go.SetActive(true);
go.GetComponent<Card>().Setting(arr[i]);
}
}
// 섞는 함수
void Shuffle<T>(List<T> list)
{
int n = list.Count;
for (int i = 0; i < n; i++)
{
int randomIndex = Random.Range(i, n);
T temp = list[i];
list[i] = list[randomIndex];
list[randomIndex] = temp;
}
}
}
을 지금까지 했다. 다들 많이 해서 나는 내일 스테이지 선택하는걸로 할까 한다.
기능 영상
저기 위에 작은 빨간색은 시각적으로 +1 되는거다. 30초가 되면 게임이 끝나는거라 틀릴때마다 +1초씩 추가되는거다. 시간만 추가하기엔 심심해서 추가했당.
밖에서 날라오는건데 시간을 0.1f로 했더니 그냥 제자리에서 뿅 생기는것처럼 보인다.................................... 그치만.... 늦추면 답답해!!!
오늘의 회고
위에 올린 코드중에 Lerp........
while (elapsedTime < flyInDuration)
{
elapsedTime += Time.deltaTime;
float t = Mathf.Clamp01(elapsedTime / flyInDuration);
go.transform.position = Vector2.Lerp(targetPos + new Vector2(Random.Range(-200f, 200f), Random.Range(-300f, 300f)), targetPos, t);
yield return null;
}
이 부분이 있는데
난 아직도 선형 보간 함수가 사실 살짝 조금 아주 찌끔 이해가 안간다.. 그래서 공부가 더 필요한 것 같다.
중간값을 계산하는 함수라는건 알겠고 둘의 값을 이용해 부드럽게 만든다는 것 도 알겠는데 이게 아는게 맞나 싶을정도로 약간 원리에 대해서 이해가 잘 안가는 그런 느낌.
그래서 내일은 선형 보간에 대해서 더 공부를 할 것 이다.
위에 투명도 조절하는 곳에도 선형 보간 함수를 썼는데 이것도 처음엔 이해가 안갔다. 그럼 공부해야지.. 그럼 해야지..
내일은 더 열심히 해야한다. 화이팅!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
근데 6시까지만 하면 안될까요? 제발요.. 쿠키런 팬게임 이제 못만들어..체력이...... 바닥...12시간은..너무길어..
'Record > TIL' 카테고리의 다른 글
[Unity] 첫 프로젝트 끝 싱숭생숭 (+KPT회고) (2) | 2024.04.19 |
---|---|
[Unity] 난 감자 돌맹이 방구 코딱지 (4) | 2024.04.18 |
[Unity] 술 한잔 마셨습니다.. (2) | 2024.04.17 |
[Unity] 캠 끄고 몰래 춤추다 매니저님께 들키기 (3) | 2024.04.16 |
[2024-03] 3월까지의 기록 (4) | 2024.03.29 |