A mecânica do jogo na aula de geometria ou vetores no Unity 3D

Material didático para a escola de programação. Parte 16

Tutoriais anteriores podem ser encontrados aqui:
  1. Nave espacial





  2. Dominó





  3. Pássaro abano





  4. Sala de gravidade





  5. Platformer





  6. Árvores (plugin SpeedTree)





  7. Modelando uma casa no SketchUp





  8. Casa na floresta





  9. Efeito de chuva. Partículas





  10. Bilhar





  11. Caráter líquido





  12. Aderindo e trabalhando com o Sistema de Eventos





  13. Sintetizador Unity 3D





  14. Hovercraft





  15. Ragdolls no Unity 3D





Neste artigo, vamos voltar nossos olhos para o passado e lembrar como a escola de programação infantil Step to Science começou. A ideia inicial do projeto era não ser apenas um círculo de criatividade técnica, mas se tornar uma resposta para as crianças à pergunta "por que ir para a escola?"





Por que precisamos de física, álgebra e geometria, se não planejamos projetar naves espaciais, se temos uma calculadora em nosso telefone para contagem, muitas vezes pagamos com um cartão, então não precisamos nem mesmo contar o troco em nossa cabeça .

Quando criança, também conduzia esse raciocínio, e meus pais não tinham outra forma de me transmitir a verdade, a não ser pela frase “não quero uma palavra, preciso falar uma palavra” e um cinto, que motivava me sentar para as aulas sem polêmicas desnecessárias.





Com a idade, passando para o outro lado das barricadas, percebi que queria explicar, mostrar e provar para as crianças que é muito importante estudar na escola! E o projeto de jogo que vamos analisar hoje faz parte de um ciclo de aulas para o estudo de disciplinas escolares por meio de jogos em Unity 3D.





O motor de plataforma cruzada Unity oferece oportunidades tremendas para o professor: através do fascinante processo de criação de jogos, estudamos as leis da física, geometria, fazemos cálculos, projetamos o ambiente, usamos narrativas, mecânica de cenários. E, claro, nós programamos. Existem inúmeras opções para integrar o Unity em outras áreas educacionais e disciplinares!





Ordem de execução

2D «», (, , ). . LineRenderer .





!





.

, 2D .





, «» . , .





, Order in layer . , Circle collider Rigidbody.





Audio Source, .





, , .





using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball : MonoBehaviour {
    public AudioSource hitSound;
    public Rigidbody2D rig;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void FixedUpdate() {

    }

    private void OnCollisionEnter2D(Collision2D other) {
        if (other.relativeVelocity.magnitude > 1f) {
            hitSound.Play();
            hitSound.volume = Mathf.Clamp01(other.relativeVelocity.magnitude / 10);
            rig.velocity *= 0.8f;
        }
    }
}
      
      



Rigidbody, . Play, , . , .





, . , : LineRenderer, .





:





, LineRenderer', :





using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Arrow : MonoBehaviour {
   public Vector3 showVector;
    public LineRenderer lrenderer1;
    public LineRenderer lrenderer2;
    Transform myTransform;

    // Use this for initialization
    void Start () {
        //lrenderer1 = GetComponent<LineRenderer>();
        myTransform = transform;
    }

   // Update is called once per frame
    void Update () {
        showVector = new Vector3(showVector.x, showVector.y, 0f);

        lrenderer1.SetPosition(0, myTransform.position);
        lrenderer1.SetPosition(1, myTransform.position + showVector);
  
        if (showVector.magnitude >= 2f) { //  
            lrenderer2.SetPosition(0, myTransform.position + showVector - showVector.normalized);
        } else {
            lrenderer2.SetPosition(0, myTransform.position + showVector * 0.5f);
        }
        lrenderer2.SetPosition(1, myTransform.position + showVector);

        if (showVector.magnitude < 0.1f) {
            lrenderer1.enabled = lrenderer2.enabled = false;
        } else {
            lrenderer1.enabled = lrenderer2.enabled = true;
        }
    }
}
      
      



- .





, "" . :





using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VectorVelocity : MonoBehaviour {
    public Rigidbody2D rig;
    public Arrow arrow;

    // Use this for initialization
    void Start () {
 
    }

    // Update is called once per frame
    void Update () {
        if (rig.bodyType == RigidbodyType2D.Dynamic) {
            arrow.showVector =  rig.velocity / 5f;
        }
    }
}
      
      



, .





. 15 , . , - Trail Renderer .





, . Rigidbody Kinematic .





:





using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Spawner : MonoBehaviour {

    public Rigidbody2D ball;
    public TrailRenderer tr;

    Quaternion oldRotation;
    Vector3 oldPosition;

    public bool readyToShoot = true;

    // Use this for initialization
    void Start () {
        oldPosition = ball.transform.position;
        oldRotation = ball.transform.rotation;
    }

    // Update is called once per frame
    public void Respawn () {
        ball.transform.position = oldPosition;
        ball.transform.rotation = oldRotation;

        ball.velocity = Vector3.zero;
        ball.angularVelocity = 0;
        ball.bodyType = RigidbodyType2D.Kinematic;

        readyToShoot = true;
        tr.Clear();
    }

    public void Shoot(Vector3 speed) {
        if (!readyToShoot) {
            return;
        }

        ball.bodyType = RigidbodyType2D.Dynamic;
        ball.velocity = speed;
        readyToShoot = false;
    }
}
      
      



.





. , . UI -> Panel , TouchPanel.cs , .





( ):





, - , , .





, / , Toggle, - . .





!





PS Compartilhe o link do artigo com colegas, amigos e alunos curiosos. Será ótimo se você tentar uma das aulas em sua escola ou círculo de criatividade técnica de seus filhos e escrever algumas palavras de feedback sobre como foi a aula do Unity 3D. Boa sorte!








All Articles