Skip to content

Userfall3000/LB-25

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

ЛР25

Кириченко Антон

ЭВТ-70

Игровой Движок: Unity.

Лабараторная работа №25

Тема: Разработать игру Bounce

Цель: разработка игры Bounce

Ход работы

  1. Настройка игрого поля

_______![1]1

_______Рис.25.1 Папки

  1. Настройка параметра Ball

_______![3]2

_______Рис.25. 2. Настройка параметра Ball

  1. Параметры New Sprite

_______ image

_______ Рис.25. 3. Параметры New Sprite

  1. Параметр PLatform

_______ image

_______Рис.25 4. Параметр PLatform

  1. Настройка MovingBlock

_______image

_______Рис. 25 6. Настройка MovingBlock

  1. Параметр MovingBlock

_______image

_______ Рис. 25 7. Параметр MovingBlock

_______ image

_______ Рис. 25 8. Параметры MovingBlock (1)

  1. Параметр FallingBlock

_______ image

_______ Рис. 25 9. Параметр FallingBlock

_______ image

_______ Рис. 25. 10Настройка FallingBlock (1)

  1. Настройка CameraHolder

_______ image

_______ Рис. 25. 11 Настройка CameraHolder

  1. Настройка Main Camera

_______ image

_______ Рис. 25. 12 Настройка Main Camera

  1. Параметр JumpHigher и его дочерние объекты

_______ image

_______ Рис. 25. 13 Параметр JumpHigher и его дочерние объекты

  1. Настройка JumpHigher

_______ image

_______ Рис. 25. 14 Настройка JumpHigher

  1. Настройка New Sprite

_______ image

_______ Рис. 25. 15 Настройка New Sprite

  1. Параметр SlowMotion и его дочерние объект

_______ image

_______ Рис. 25. 16 Параметр SlowMotion и его дочерние объект

  1. Параметры TextMeshPro

_______ image

_______ Рис. 25. 17 Параметры TextMeshPro

_______ image

_______ Рис. 25. 18 Параметры TextMeshPro (1)

  1. Настройка параметра Manager

_______ image

_______ Рис. 25. 19 Настройка параметра Manager

  1. Настройка TextMeshPro в параметре fastMotion

_______ image

_______ Рис. 25. 20 Настройка TextMeshPro в параметре fastMotion

  1. Настройка TextMeshPro в параметре

_______ image

_______ Рис. 25. 21 Настройка TextMeshPro в параметре

  1. Настройка параметра ElectricPower

_______ image

_______ Рис. 25. 22 Настройка параметра ElectricPower

  1. Настройка TextMeshPro в параметре ElectricPower

_______ image

_______ image

_______ Рис. 25. 23 и 25. 24. Настройка TextMeshPro в параметре ElectricPower

  1. Настройка параметра PointObject

_______ image

_______ Рис. 25. .25 Настройка параметра PointObject

  1. Настройки параметра Line

_______ image

_______ Рис. 25. 26 Настройки параметра Line

  1. Настройка параметра ScoreCanvas

_______ image

_______ Рис. 25. 27 Настройка параметра ScoreCanvas

  1. Настройка параметра Image в параметре ScoreCanvas

_______ image

_______ Рис. 25. 28 Настройка параметра Image в параметре ScoreCanvas

  1. Настройка параметра TextMeshPro Text в параметре ScoreCanvas

_______ image

_______ Рис. 25 29. Настройка параметра TextMeshPro Text в параметре ScoreCanvas

_______ image

_______ Рис. 25. 30 Настройка параметра TextMeshPro Text в параметре ScoreCanvas

  1. Настройка параметра EventSystem Параметр StartCanvas и его дочерние объекты Panel и Button
    

_______ image

_______ Рис. 25. 31 Настройка параметра EventSystem Параметр StartCanvas и его дочерние объекты Panel и Button

  1. Настройка параметра StartCanvas
    

_______ image

_______ Рис. 25. 32 Настройка параметра StartCanvas

  1. Настройка параметра Panel
    

_______ image

_______ Рис. 25. 33 Настройка параметра Panel

  1. Настройка параметра TextMeshPro Text в параметре StartCanvas
    

_______ image

_______ Рис. 25 .34 Настройка параметра TextMeshPro Text в параметре StartCanvas

_______ image

_______ Рис. 25 35 Настройка параметра TextMeshPro Text в параметре StartCanvas


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball : MonoBehaviour
{    Rigidbody2D rgbd;
    public Vector2 maxForce;
    public float forceAppliedInSidewaysDirection;
    public bool moving;
    float sidewaysMovement;
    BallFuctionality ballFuctionality;
    // Start is called before the first frame update
    void Start()
    {
        rgbd = GetComponent<Rigidbody2D>();
        ballFuctionality = GetComponent<BallFuctionality>();
    }
    // Update is called once per frame
    void Update()
    {
        // clampVeclocity();
      //  Debug.Log(rgbd.velocity);
        movement();
    }
    public void FixedUpdate()
    {
        if (!moving)
        {
            Vector2 vel = rgbd.velocity;
            vel.x = Mathf.Lerp(vel.x, 0, 0.2f);
            rgbd.velocity = vel;
        }
    }
    void clampVeclocity()
    {
        Vector2 vel = rgbd.velocity;
        if (Mathf.Abs(vel.x) >= maxForce.x)
        {
            vel.x = maxForce.x * Mathf.Sign(rgbd.velocity.x);
        }
        if ((vel.y) >= maxForce.y)
        {   if (ballFuctionality.jumpHigher) return;
            vel.y = maxForce.y;
        }
        rgbd.velocity = vel;
    }
    void movement()
    {
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            rgbd.AddForce(new Vector2(-forceAppliedInSidewaysDirection, 0));
        }
        if (Input.GetKey(KeyCode.RightArrow))
        {
            rgbd.AddForce(new Vector2(forceAppliedInSidewaysDirection, 0));
        }
        if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.LeftArrow))
        {
            moving = true;
        }
        if (Input.GetKeyUp(KeyCode.RightArrow) || Input.GetKeyUp(KeyCode.LeftArrow))
        {
            moving = false;
        }
    }
}

3.	Скрипт BlockScript
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BlockScript : MonoBehaviour
{
    public bool moveBlock, fallingBlock;
    bool startMovingBlock, startFallingBlock;
    Rigidbody2D rgbd;
    bool moveLeft;
    // Start is called before the first frame update
    void Start()
    {
        rgbd = GetComponent<Rigidbody2D>();
        if (Random.value > 0.5)
        {
            moveLeft = true;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (startMovingBlock && moveBlock)
        {
            if (moveLeft)
            {
                rgbd.velocity = new Vector2(-3, 0);
            }
            else
            {
                rgbd.velocity = new Vector2(3, 0);
            }
        }
    }
    public void OnCollisionEnter2D(Collision2D collision)
    {   if(collision.collider.tag == "Player") {
            if (moveBlock)
            {
                startMovingBlock = true;
            }
            else if (fallingBlock)
            {
                rgbd.bodyType = RigidbodyType2D.Dynamic;
            }
        }
    }
}



4.	Скрипт CameraController
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Node : MonoBehaviour
{
    public Vector2 Pos => transform.position;
    public Block OccupiedBlock;
}
5. Скрипт Manager
using System.Collections;
using UnityEngine.SceneManagement;
using UnityEngine;
public class Manager : MonoBehaviour
{
    public bool slowTime, fastTime;
    public float slow;
    public bool startGame;
    public void slowTimerStart()
    {
        StartCoroutine(slowTheTime());
    }
    IEnumerator slowTheTime()
    {
        slowTime = true;
        Time.timeScale = 1 / slow;
        Time.fixedDeltaTime = Time.fixedDeltaTime / slow;
        FindObjectOfType<BallFuctionality>().forceAppliedInUpwardDirection *= 2;
        yield return new WaitForSeconds(2 * slow);
        Time.timeScale = 1;
        Time.fixedDeltaTime = Time.fixedDeltaTime * slow;
        FindObjectOfType<BallFuctionality>().forceAppliedInUpwardDirection /= 2;
        slowTime = false;
    }
    public void FastTimerStart()
    {
        StartCoroutine(fastTheTime());
    }
    IEnumerator fastTheTime()
    {
        fastTime = true;
        Time.timeScale = 1 * slow;
        Time.fixedDeltaTime = Time.fixedDeltaTime * slow;
        FindObjectOfType<BallFuctionality>().forceAppliedInUpwardDirection /= 2;
        yield return new WaitForSeconds(2 * slow);
        Time.timeScale = 1;
        Time.fixedDeltaTime = Time.fixedDeltaTime / slow;
        FindObjectOfType<BallFuctionality>().forceAppliedInUpwardDirection *= 2;
        fastTime = false;
    }
    public void StartTheGame()
    {
        startGame = true;
        FindObjectOfType<BallFuctionality>().GetComponent<Rigidbody2D>().bodyType = RigidbodyType2D.Dynamic;
    }
    public void RestartTheGame()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}
6. Скрипт PointsObject
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PointsObject : MonoBehaviour
{
    Transform[] childObj;
    public GameObject Points1;
    public int force;
    public bool hasBroke;
   public void Explode()
    {
        hasBroke = true;
        Points1.SetActive(true);
        Points1.GetComponent<Rigidbody2D>().bodyType = RigidbodyType2D.Dynamic;
        Points1.GetComponent<Rigidbody2D>().AddForceAtPosition(Vector2.up * force * 3 / 2, Points1.transform.position);
        foreach (Transform t in transform)
        {
            Rigidbody2D rgbd = t.GetComponent<Rigidbody2D>();
            if (rgbd != null)
            {
                //shake camera 
                rgbd.bodyType = RigidbodyType2D.Dynamic;
                rgbd.AddForceAtPosition(Vector2.up * force, 
                    new Vector2(Random.Range(t.position.x - 2, t.position.x + 2), t.position.y));
                //play sound
            }
        }
    }
}
7. Скрипт Score
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Score : MonoBehaviour
{
    public TMPro.TextMeshProUGUI scoreText;
    public int ScoreValue;
    public void AddScore()
    {
        ScoreValue++;
        scoreText.text = ScoreValue.ToString();
    }
}

Вывод: в ходе проделанной работы - разработана игра Bounce Отчёт по Bounce.docx

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published