UNITY_C#

[유데미x스나이퍼팩토리]과제_0914유니티(Unity) 10주 완성 프로젝트 캠프_기초 학습_과제_미니게임커스텀

쫑나리 2023. 9. 15. 11:15
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에게 뭔지 다시 물어보았습니다.

Mathf.PingPong 이란

아주 명쾌하네요!
 
그리고 벽의 이동 범위는 처음에만 지정해주기위해 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