나의 개발 블로그인 티스토리가 어제 먹통이되어.. 네이버로 임시 작성 후 다시 글을 쓰러 왔습니다.
다른 사람 블로그는 모두 들어가지는걸로 봐서는 아주 못된.. 카카오...
저를 왕따 시키는 것 같읍니다..
티스토리가 조금 바뀌었더라고요.. 사용중인 스킨이 있었는데 거기서 문제가 발생한건지 아무튼 그렇습니다.
사실입니다..
매니저님께서 2차 확인도 받아주셨습니다..
오늘의 TIL은 간단하게 쓰고 마치렵니다.. 나중에 추가 작성하러 오겠습니다.
점프대 구현하기
어렵지 않습니다...
기존에 튜터님이 ItemData를 바탕으로 저는 맵에서 사용할 아이템들인 TrickItemData파일을 만들어서 ScriptableObject 를 만들었습니다.
기존에 있던 ItemData에 처음에는 만들려고 했는데 인벤토리에 넣는걸 상속받고 있어서 그냥 새로 만들었습니다.
점프대, 움직이는 발판, 사다리가 TrickItemObject들인데요.
점프대만 구현하면 움직이는 발판, 사다리정도는 껌입니다.
점프대에서 시간을 많이 쓴 것 같아요.
어떻게 해야할지 갈팡질팡 하다가요.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrickItemObject : MonoBehaviour, IInteractable
{
public TrickItemData trickItemData;
private bool isMovePadMoving = false;
private bool isClimbing = false;
private GameObject playerObject;
private Rigidbody playerRigidbody;
private void Start()
{
playerObject = CharacterManager.Instance.Player.gameObject;
playerRigidbody = playerObject.GetComponent<Rigidbody>();
}
public string GetInteractPrompt()
{
string str = $"{trickItemData.displayName}\n{trickItemData.description}";
return str;
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Player"))
{
playerObject = collision.gameObject;
if (playerRigidbody != null)
{
switch (trickItemData.trickItemType)
{
case TrickItemType.JumpPad:
Vector3 jumpDirection = transform.up;
float jumpForce = trickItemData.jumpForce;
Debug.Log("점프대랑 충돌");
playerRigidbody.AddForce(jumpDirection * jumpForce, ForceMode.Impulse);
break;
case TrickItemType.MovePad:
Debug.Log("전망대랑 충돌");
StartCoroutine(MovePadRoutine());
playerObject.transform.parent = transform;
break;
case TrickItemType.Ladder:
Debug.Log("사다리 사용");
isClimbing = true;
playerRigidbody.useGravity = false;
break;
}
}
}
}
// 생략
처음에는 Trigger를 이용해서 점프기능을 넣으려고 했는데, 점프대에 올라가는 그 느낌이 부족해서 Trigger로 사용은 안했습니다.
진짜 점프대에 닿는 그런 느낌으로 하고싶었어요. Trigger 체크를 안하면 물리적으로 되어있는 오브젝트를 사용할 수 있습니다...
TrickItem에서 사용한 스크립트는 TrickItemObject, TrickItemData 두개정도 되는 것 같습니다.
현재 TrickItemObject에서 충돌처리 이벤트를 하고있는데 아마 리팩토링을 하게된다면 PlayerController에 옮길 수 있지않을까 하는 생각이 듭니다.
점프대 위에 올라갔을때 플레이어의 y값이 변하는거니깐요.
이 발판 위로 올라가게 되면 충돌 이벤트가 생겨서 플레이어가 튕겨져나가게 됩니다. 모든걸 튕겨내는건 아니고 Player 태그를 가지고 있는 오브젝트가 닿았을때로 설정했습니다.
점프 하는 부분만 보면 됩니다유
현재 이정도는 구현했습니다...
아마 목요일까지 모두 완성은 무리일 것 같지만 열심해 해보겠습니당...
화이팅~~^^
접속오류로 나의 소중한 방문자들이 줄어들었읍니다..
힝
'Record > TIL' 카테고리의 다른 글
[Unity] 낮일때는 회복되고 밤일때는 소모되는 UI 만들기 (0) | 2024.05.30 |
---|---|
[Unity] 플랫폼 발사대 (포물선으로 튕겨내기) (4) | 2024.05.29 |
[Unity] AI 네비게이션 (2) | 2024.05.27 |
[Unity] SOLID 원칙 (4) | 2024.05.24 |
[Unity] 고전 게임 기반 팀프로젝트 마무리 (똥피하기게임) (0) | 2024.05.23 |