728x90
반응형
SMALL
일정한 범위 내에서 위 아래로 벽이 움직이도록 커스텀 했습니다.(창의력 없습니다.있었는데 없어요)
Mathf.PingPong 사용
public float verticalSpeed; //움직임의 속도
public float maxHeight = 0.3f; //최대 높이
private Vector3 startPos; //시작 위치
움직이는 벽을 만들기 위해
Vector3 pos = transform.position;
pos.y = startPos.y + (Mathf.PingPong(Time.time * verticalSpeed, maxHeight * 2) - maxHeight);
transform.position = new Vector3(pos.x + speed * Time.deltaTime, pos.y, pos.z);
를 주었습니다.
하지만 여기서 잠깐 저는 Mathf.PingPong이 뭔지 모릅니다.
GPT를 추궁해서 얻은 코드니 GPT에게 뭔지 다시 물어보았습니다.
아주 명쾌하네요!
그리고 벽의 이동 범위는 처음에만 지정해주기위해 start 안에서
verticalSpeed = Random.Range(-2.2f, 2.2f);
위 아래로 움직일 수 있도록 범위를 지정해 주었습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Wall : MonoBehaviour
{
public float speed = -5; // 벽의 속도
public float verticalSpeed; //움직임의 속도
public float maxHeight = 0.3f; //최대 높이
private Vector3 startPos; //시작 위치
Player player;
void Start()
{
player = GameObject.Find(name: "Player").GetComponent<Player>();
startPos = transform.position;
//Player.cs 안에 scoreOutput과 같은 구조
verticalSpeed = Random.Range(-2.2f, 2.2f);
}
void Update()
{
Vector3 pos = transform.position;
pos.y = startPos.y + (Mathf.PingPong(Time.time * verticalSpeed, maxHeight * 2) - maxHeight);
transform.position = new Vector3(pos.x + speed * Time.deltaTime, pos.y, pos.z);
if (transform.position.x < -10)
{
Destroy(gameObject);
player.addScore(1); //파라미터를 int 타입으로 주었기때문에 int 타입으로 인자 전달
}
}
}
728x90
반응형
LIST
'UNITY_C#' 카테고리의 다른 글
[유데미x스나이퍼팩토리]4회차_0918_(Unity) 10주 완성 프로젝트 캠프_도트먹기게임,시점특징유니티 (0) | 2023.09.18 |
---|---|
[유데미x스나이퍼팩토리]3회차_0915유니티(Unity) 10주 완성 프로젝트 캠프_에셋활용 (0) | 2023.09.15 |
[유데미x스나이퍼팩토리x웅진씽크빅]2회차_0913유니티(Unity) 10주 완성 프로젝트 캠프_기초 학습_미니게임만들기2 (0) | 2023.09.13 |
[유데미x스나이퍼팩토리]2회차_0913유니티(Unity) 10주 완성 프로젝트 캠프_기초 학습_후기_미니게임만들기 (0) | 2023.09.13 |
[유데미x스나이퍼팩토리x웅진씽크빅]2일차_0912_유니티(Unity) 10주 완성 프로젝트 캠프_기초 학습_유니티 단축키 모음 (0) | 2023.09.12 |