일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 크래프톤 정글랩
- 유니티 스토리
- 유니티 대화
- unity 강의
- Unity 독학
- 게임 독학
- unity 게임
- ETRI 연구연수
- 게임 개발 독학
- protobuf 란?
- 크래프톤
- 유니티
- 유니티 퀘스트
- 오픽 im1
- 오픽 im1 5일
- 게임 개발
- protobuf란
- 유니티 독학
- node.js
- unity
- 유니티 체스
- 유니티 미연시
- unity 개발
- 크래프톤 정글 게임랩
- 크래프톤 게임 정글 랩
- 크래프톤 정글 게임 랩
- unity 설치
- Unity Chess
- unity 공부
- unity 게임 개발
- Today
- Total
하참이의 아이디어노트
Unity 강의 7일차 (2) - 플레이어 따라가기 본문
본 강의는 다음 문서를 참고하여 제작하였습니다. 자세한 내용은 하단 링크를 참조하시거나 댓글로 질문 남겨주시면 성심성의껏 답변 드리겠습니다.
4.2강 - 플레이어 따라가기 - Unity Learn
개요: 플레이어는 마음껏 굴러다닐 수 있지만, 아직 어떤 목적도 없습니다. 이 수업에서는 플레이어를 쫓아다니는 적을 추가하여 게임에 목적을 부여해 보겠습니다. 가장 먼저 적에게 원하는 텍
learn.unity.com
게임의 목적을 만들기 위해 적을 생성해보겠습니다.
새 Sphere를 생성하고 이름을 Enemy로 변경합니다.
x, y, z를 Player와 같게 1.5, 1.5, 1.5로 변경 한 뒤, Rigidbody 컴포넌트를 추가합니다.
Physics Materia를 제작하고 이름을 Bouncy로 설정합니다.
Bounciness 값을 1로 설정하고 Bounce Combine을 Multiply로 변경 한 다음, Player와 Enemy에게 적용하고 테스트합니다.
Player를 계속해서 따라가는 적 AI를 만들어보겠습니다. 두근두근하네요.
Enemy 스크립트를 생성하고 다음과 같이 작성합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed;
private Rigidbody enemyRb;
private GameObject player;
// Start is called before the first frame update
void Start()
{
enemyRb = GetComponent<Rigidbody>();
player = GameObject.Find("Player");
}
// Update is called once per frame
void Update()
{
enemyRb.AddForce((player.transform.position - transform.position).normalized * speed);
}
}
이제 Enemy 게임 오브젝트에 부착하고 speed 프로퍼티를 5정도로 설정해봅시다.
게임을 실행하면 꽤나 어려운 게임이 완성됩니다.
변수를 정리하여 하드코딩을 수정합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed;
private Rigidbody enemyRb;
private GameObject player;
// Start is called before the first frame update
void Start()
{
enemyRb = GetComponent<Rigidbody>();
player = GameObject.Find("Player");
}
// Update is called once per frame
void Update()
{
Vector3 lookDirection = (player.transform.position - transform.position).normalized;
enemyRb.AddForce(lookDirection * speed);
}
}
이제 SpawnManager를 사용하여 적을 생성해보도록 합시다.
Prefabs 폴더를 생성하고 Enemy를 드래그하여 프리팹화 합니다.
씬에 있는 Enemy는 삭제하고 Spawn Manager 오브젝트와 스크립트를 생성한 뒤 부착합니다.
SpawnManager 스크립트를 다음과 같이 작성합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnManager : MonoBehaviour
{
public GameObject enemyPrefab;
public float spawnRange = 9;
// Start is called before the first frame update
void Start()
{
Instantiate(enemyPrefab, GenerateSpawnPosition(), enemyPrefab.transform.rotation);
}
private Vector3 GenerateSpawnPosition()
{
float spawnPosX = Random.Range(-spawnRange, spawnRange);
float spawnPosZ = Random.Range(-spawnRange, spawnRange);
Vector3 randomPos = new Vector3(spawnPosX, 0, spawnPosZ);
return randomPos;
}
// Update is called once per frame
void Update()
{
}
}
GenerateSpawnPosition이라는 함수를 생성하여 Random한 위치에 적을 생성하도록 하였습니다.
게임을 실행하면 적이 랜덤한 위치에 생성이 됩니다.
'Unity > Unity 기초' 카테고리의 다른 글
Unity 강의 8일차 (1) - UI 마우스 클릭 (0) | 2025.01.31 |
---|---|
Unity 강의 7일차 (3) - 파워업 및 카운트다운 (0) | 2025.01.22 |
Unity 강의 7일차 (1) - 시점 설정 (0) | 2025.01.22 |
Unity 강의 6일차 (2) - 플레이어 제어 (0) | 2025.01.21 |
Unity 강의 6일차 (1) - 풍선, 폭탄, 부울 (0) | 2025.01.21 |