> 기술 주변기기 > IT산업 > UI 및 게임 플레이에서 통합 클론 구축

UI 및 게임 플레이에서 통합 클론 구축

Lisa Kudrow
풀어 주다: 2025-02-19 11:30:13
원래의
842명이 탐색했습니다.
이 튜토리얼은 고전적인 Pong Aesthetics, 개선 된 게임 플레이 메커니즘 및 레트로 스타일의 UI를 추가하여 Unity에서 내장 된 기본 Pong 클론을 향상시킵니다. Pong 게임을 업그레이드합시다!

2 부 : 레트로 개조 및 향상된 게임 플레이

이 튜토리얼은 이전 Pong 클론을 기반으로합니다. 진행하기 전에 Github 또는 Part 1을 완료하는 프로젝트를 다운로드하십시오. 작동하는 데모와 최종 개선 된 게임도 사용할 수 있습니다. 주요 개선 사항 :

클래식 스타일링 :

흑백 스프라이트 수입, 정통 레트로 비주얼을 위해 단위당 픽셀 (64). 기본 카메라 배경을 검은 색으로 변경하고 그에 따라 패들 및 볼 스프라이트를 업데이트하십시오. 여러 개의 스케일링 된 흰색 스프라이트를 사용하여 중앙 분배기를 만듭니다 강화 충돌 : 패들의 충격 각도를 계산하기 위해 볼 충돌 처리를 개선하여 층이 더 현실적입니다. 여기에는 함수를 사용하기 위해 스크립트의 메소드를 업데이트하는 것이 포함됩니다. 플레이어와 적의 패들에 적절하게 태그를 지정해야합니다. 개선 된 적 AI : 시간 기반 계산을 사용하여 부드러운 적의 패들 움직임, 응답 성 및 도전을 향상시킵니다.
    스크립트를 수정하여 를 사용하여 최적의 부드러움을 위해 속도와 타이밍을 조정하십시오. AI 패들이 화면 밖으로 나가는 것을 방지하기 위해 경계를 추가하십시오. 스크립트는 공이 파괴 된 후 적의 패들의 위치를 ​​재설정해야합니다.
  • 레트로 일시 정지 메뉴 : 사용자 정의 픽셀 글꼴 (예 : 실크 스크린)을 사용하여 일시 정지 메뉴를 만듭니다. 적절한 기능이있는 "재설정"및 "메인 메뉴"버튼을 포함하십시오. 스크립트는 일시 정지 메뉴 요소를 표시/숨기기와 함께 일시 정지 및 재개를 관리합니다. "showonPause"로 일시 정지 메뉴 요소를 태그하십시오. 동적 메인 메뉴 :
  • 배경에 시뮬레이션 된 AI 게임 플레이가있는 메인 메뉴를 디자인하십시오. 기본 게임 장면을 복제하고 불필요한 요소를 제거하고 제목 및 "재생"버튼을 추가하십시오. 메인 메뉴에서 ai 패들을 제어하기 위해
  • 스크립트 (적 AI와 유사하지만 속도 및 타이밍을 조정 함)를 사용하십시오. 득점 시스템 : 플레이어 및 AI 점수를 추적하는 득점 시스템을 구현하고 UI에 표시 ( 스크립트 사용)에 표시하고 점수 한도 (예 : 7 점, 7 포인트) 게임을 종료합니다. )에 도달하여 화면에 게임을 표시합니다. 스크립트는 승자를 표시합니다. "showonfinish"로 게임에 요소를 태그하는 것을 잊지 마십시오 BallController OnCollisionEnter2D 코드 스 니펫 : (BallController.cs -OnCollisionEnter2d & 런치 앵이)

    (EnemyController.cs -Move)

    void OnCollisionEnter2D(Collision2D col) {
        if (col.gameObject.tag == "Enemy") {
            float y = launchAngle(transform.position, col.transform.position, col.collider.bounds.size.y);
            Vector2 d = new Vector2(1, y).normalized;
            rig2D.velocity = d * speed * 1.5F;
        }
        if (col.gameObject.tag == "Player") {
            float y = launchAngle(transform.position, col.transform.position, col.collider.bounds.size.y);
            Vector2 d = new Vector2(-1, y).normalized;
            rig2D.velocity = d * speed * 1.5F;
        }
    }
    
    float launchAngle(Vector2 ball, Vector2 paddle, float paddleHeight) {
        return (ball.y - paddle.y) / paddleHeight;
    }
    로그인 후 복사

    <<> (uimanager.cs -partial)

    void Move() {
        if (ball == null) {
            ball = GameObject.FindGameObjectWithTag("Ball").transform;
        }
        ballRig2D = ball.GetComponent<Rigidbody2D>();
        if (ballRig2D.velocity.x > 0) {
            if (ball.position.y > this.transform.position.y + .5F) {
                transform.Translate(Vector3.up * speed * Time.deltaTime);
            } else if (ball.position.y < this.transform.position.y - .5F) {
                transform.Translate(Vector3.down * speed * Time.deltaTime);
            }
        }
        // ... bounds checking ...
    }
    로그인 후 복사
    <<> (pointCounter.cs) <🎜 🎜>

    <<> (gameover.cs)

    // ... other methods ...
    
    public void showFinished() {
        foreach (GameObject g in finishObjects) {
            g.SetActive(true);
        }
    }
    
    // ... other methods ...
    로그인 후 복사

    AI 스크립트의 속도 및 타이밍과 같은 값을 조정하여 게임 플레이 난이도를 미세 조정해야합니다. 이 강화 된 Pong 클론은보다 완벽하고 매력적인 복고풍 게임 경험을 제공합니다. GitHub 링크 (입력에 제공되지 않음)에는 전체 프로젝트 파일이 포함됩니다.

위 내용은 UI 및 게임 플레이에서 통합 클론 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿