Mekanika game dalam pelajaran geometri atau vektor dalam Unity 3D

Bahan ajar untuk sekolah pemrograman. Bagian 16

Tutorial sebelumnya dapat ditemukan di sini:
  1. Pesawat luar angkasa





  2. Domino





  3. Burung Flappy





  4. Ruang gravitasi





  5. Platformer





  6. Pohon (plugin SpeedTree)





  7. Memodelkan rumah di SketchUp





  8. Rumah di hutan





  9. Efek hujan. Partikel





  10. Bilyar





  11. Karakter cair





  12. Menempel dan bekerja dengan Sistem Acara





  13. Penyintesis 3D Unity





  14. Kapal berbantalan udara





  15. Ragdolls di Unity 3D





Dalam artikel ini, kita akan mengalihkan pandangan kita ke masa lalu, dan mengingat bagaimana sekolah pemrograman anak-anak Step to Science dimulai. Ide awal dari proyek ini tidak hanya menjadi lingkaran kreativitas teknis, tetapi menjadi jawaban bagi anak-anak atas pertanyaan "mengapa pergi ke sekolah?"





Mengapa kita membutuhkan fisika, aljabar dan geometri, jika kita tidak berencana merancang pesawat luar angkasa, jika kita memiliki kalkulator di ponsel kita untuk menghitung, kita sering membayar dengan kartu, jadi kita bahkan tidak perlu menghitung perubahan di kepala kita .

Sebagai seorang anak, saya juga melakukan penalaran seperti itu, dan orang tua saya tidak punya cara lain untuk menyampaikan kebenaran kepada saya, kecuali ungkapan "Saya tidak ingin sepatah kata pun, saya harus punya kata" dan ikat pinggang, yang memotivasi saya duduk untuk pelajaran tanpa polemik yang tidak perlu.





Seiring bertambahnya usia, pindah ke sisi lain dari barikade, saya menyadari bahwa saya ingin menjelaskan, menunjukkan, dan membuktikan kepada anak-anak bahwa sangat penting untuk belajar di sekolah! Dan proyek game yang akan kami analisis hari ini adalah salah satu siklus kelas untuk mempelajari mata pelajaran sekolah melalui game di Unity 3D.





Mesin lintas platform Unity memberikan peluang luar biasa bagi guru: melalui proses pembuatan game yang menakjubkan, kami mempelajari hukum fisika, geometri, melakukan penghitungan, merancang lingkungan, menggunakan cerita, dan mekanika skenario. Dan, tentu saja, kami memprogram. Ada banyak sekali pilihan untuk mengintegrasikan Unity ke dalam bidang pendidikan dan mata pelajaran lainnya!





Perintah eksekusi

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 Bagikan tautan ke artikel dengan kolega, teman, dan siswa yang penasaran. Akan sangat bagus jika Anda mencoba salah satu pelajaran di sekolah atau lingkaran kreativitas teknis anak-anak Anda, dan menulis beberapa kata umpan balik tentang bagaimana pelajaran Unity 3D berlangsung. Semoga berhasil!








All Articles