string keyword="타겟";
1. Team Project : CodingPlease
(1) 몬스터 랜덤 생성
>>양쪽에서 나타날 몬스터들 프리팹화
<MonsterManager>
public GameObject monsterRight;
public GameObject monsterLeft;
// Start is called before the first frame update
void Start()
{
Instantiate(monsterRight);
Instantiate(monsterLeft);
}
>> MonsterManager를 만들어서 소환시켜준다.
결국 하나의 명령으로 몬스터를 양쪽에서 생성할 수 있게는 못하고 왼쪽, 오른쪽 몬스터를 따로 만들어줬다ㅜㅠ
일단 이렇게 진행하고 나중에 수정해봐야겠다.
(2) 총알 복제
몬스터에게 총알을 들려줬다.
<MonserMoveLeft>
void ShootingBullet()
{
float x = this.transform.position.x;
float y = this.transform.position.y;
Instantiate(bullet, new Vector3(x, y, 0), Quaternion.identity);
}
>>총알 생성 후 InvokeRepeating("ShootingBullet", 0.0f, 0.5f);를 start함수에 추가해서 총알이 복제가 될 수 있게 만들었다.
>>몬스터가 가진 총알이 복제가 된다.
(3) 총알 발사
오늘 거의 하루종일 고민을 한 부분...
타겟을 플레이어의 좌표로 잡고 그 부분으로 총알이 날라가게 하고 싶은데,
도무지 어찌 해야할 지 감도 안와서 튜터님에게 왔다갔다 하면서 이것 저것 작성하며 건드려보았다.
튜터님의 조언대로 코드를 쳐보려 했지만 내 실력으론 한계인건지 계속 빨간 줄뜨고..실패ㅜㅠ
그러다가 우리 팀원분이 한방에 해결해 주셨다.
<BulletShootingToTarget>
GameObject target;
public float speed = 5.0f; // 이동 속도를 public 변수로 설정하여 에디터에서 조절 가능하게 함
void Start()
{
target = GameObject.Find("Player");
transform.eulerAngles = new Vector3(0f, 0f, getAngle(transform.position.x, transform.position.y, target.transform.position.x, target.transform.position.y));
}
void Update()
{
transform.Translate(Vector2.right * speed * Time.deltaTime);
}
float getAngle(float x1, float y1, float x2, float y2)
{
float dx = x2 - x1;
float dy = y2 - y1;
float rad = Mathf.Atan2(dy, dx);
float degree = rad * Mathf.Rad2Deg;
return degree;
>>target으로 임시로 만들어놓은 오브젝트인 Player를 찾은 다음 총알과의 거리의 각도를 계산하여 보내는....
넙죽 받아먹은 코드다.
마무리
진짜.........거의 고민만 하다가 오늘 하루가 다 간것같다.
제일 고민거리였던 총알발사 부분을 팀원분의 도움으로 일단은 해결했지만 나중에 튜터님의 조언대로도 한번 만들어봐야겠다.
.
.
.
with 요비
'개발자_뉴비일지' 카테고리의 다른 글
내일배움캠프 Unity 27일차 TIL - 추가작업 (0) | 2024.01.31 |
---|---|
내일배움캠프 Unity 26일차 TIL - 목표달성 (0) | 2024.01.29 |
내일배움캠프 Unity 24일차 TIL - null (1) | 2024.01.25 |
내일배움캠프 Unity 23일차 TIL - START TeamProject 02 (1) | 2024.01.24 |
내일배움캠프 Unity 22일차 TIL - 저장 (1) | 2024.01.23 |