본문 바로가기

게임개발/게임플랫폼 응용 프로그래밍37

좀비 서바이버 (7) 아이템 생성 총알 아이템 using UnityEngine; // 총알을 충전하는 아이템 public class AmmoPack : MonoBehaviour, IItem { public int ammo = 30; // 충전할 총알 수 public void Use(GameObject target) { // 전달 받은 게임 오브젝트로부터 PlayerShooter 컴포넌트를 가져오기 시도 PlayerShooter playerShooter = target.GetComponent(); // PlayerShooter 컴포넌트가 있으며, 총 오브젝트가 존재하면 if (playerShooter != null && playerShooter.gun != null) { // 총의 남은 탄환 수를 ammo 만큼 더한다 playerShoot.. 2024. 3. 11.
좀비 서바이버 (6) 좀비 생성 새로운 웨이브가 시작될 때 좀비를 한꺼번에 생성 좀비가 모두 사망해야 다음 웨이브로 넘어감 using UnityEngine; // 좀비 생성시 사용할 셋업 데이터 [CreateAssetMenu(menuName = "Scriptable/ZombieData", fileName = "Zombie Data")] public class ZombieData : ScriptableObject { public float health = 100f; // 체력 public float damage = 20f; // 공격력 public float speed = 2f; // 이동 속도 public Color skinColor = Color.white; // 피부색 } using System.Collections.Generic;.. 2024. 3. 11.
좀비 서바이버 (5) 게임 상태 표시 UI만들기 UI매니저 using UnityEngine; using UnityEngine.SceneManagement; // 씬 관리자 관련 코드 using UnityEngine.UI; // UI 관련 코드 // 필요한 UI에 즉시 접근하고 변경할 수 있도록 허용하는 UI 매니저 public class UIManager : MonoBehaviour { // 싱글톤 접근용 프로퍼티 public static UIManager instance { get { if (m_instance == null) { m_instance = FindObjectOfType(); } return m_instance; } } private static UIManager m_instance; // 싱글톤이 할당될 변수 public Text am.. 2024. 3. 11.
데미지 텍스트 만들기 2 : DoTween으로 만들기 using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Damage2 : MonoBehaviour { void Start() { //위로 200픽셀 움직임 var targetPos = this.transform.localPosition; targetPos.y += 200; this.transform.DOLocalMoveY(targetPos.y, 1).OnComplete(() => { Destroy(this.gameObject); }); //크기가 2배로 커졌다가 작아짐 this.transform.DOScale(2, 0.5f).OnComplete(() => { if.. 2024. 3. 11.
데미지 텍스트 만들기 1 : 애니메이션으로 만들기 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class UIAnamationMain : MonoBehaviour { [SerializeField] private Transform point; //보스의 게이지 위치 (월드상) [SerializeField] private Transform damagePoint; //보스의 데미지 텍스트 위치 (월드상) [SerializeField] private Transform bossGauge; [SerializeField] private Canvas canvas; [SerializeField] private Camera uiCamera;.. 2024. 3. 11.
UI카메라를 사용할 때 UI위치 변환 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class UIAnamationMain : MonoBehaviour { [SerializeField] private Transform point; //보스의 게이지 위치 (월드상) [SerializeField] private Transform bossGauge; [SerializeField] private Canvas canvas; [SerializeField] private Camera uiCamera; void Start() { } void Update() { //Canvas 의 Render Mode가 Overlay일경우 //.. 2024. 3. 11.
스프라이트 이미지 선명하게 바꾸기 이미지를 클릭한 후 옆에 뜨는 inspector 창에서 Advanced > Filter Mode를 Point (no filter)로 바꾸어준다. 또한, Default에서 Compression을 None으로 바꿔준다. 그러면 불필요한 이미지 압축이 들어가지 않기 때문에 더욱 선명한 이미지 소스를 얻을 수 있다. 이미지의 사이즈는 Scale이 아닌 Pixels per Unit 으로 조정한다 : 숫자가 클수록 사이즈가 작아짐 2024. 3. 8.
좀비 서바이버 (4) 좀비 AI 생명체 클래스 : 데미지클래스를 상속받음 using System; using UnityEngine; // 생명체로서 동작할 게임 오브젝트들을 위한 뼈대를 제공 // 체력, 데미지 받아들이기, 사망 기능, 사망 이벤트를 제공 public class LivingEntity : MonoBehaviour, IDamageable { public float startingHealth = 100f; // 시작 체력 public float health { get; protected set; } // 현재 체력 public bool dead { get; protected set; } // 사망 상태 public event Action onDeath; // 사망시 발동할 이벤트 // 생명체가 활성화될때 상태를 리셋 pro.. 2024. 3. 8.
좀비 서바이버 (3) 플레이어 체력 UI 만들기 슬라이더의 크기 - 캔버스 아래를 모두 선택한 후 앵커프리셋 >> alt누르고 우측하단 stretch 클릭 using UnityEngine; using UnityEngine.UI; // UI 관련 코드 // 플레이어 캐릭터의 생명체로서의 동작을 담당 public class PlayerHealth : LivingEntity { public Slider healthSlider; // 체력을 표시할 UI 슬라이더 public AudioClip deathClip; // 사망 소리 public AudioClip hitClip; // 피격 소리 public AudioClip itemPickupClip; // 아이템 습득 소리 private AudioSource playerAudioPlayer; // 플레이어 소리 .. 2024. 3. 8.