peliohjelmointi
Erot
Tämä näyttää erot valitun ja nykyisen version kesken tästä sivusta.
| Both sides previous revisionEdellinen revisioSeuraava revisio | Edellinen revisio | ||
| peliohjelmointi [2014/04/02 21:10] – [Pallo] moversti | peliohjelmointi [2015/08/13 07:20] (nykyinen) – ulkoinen muokkaus 127.0.0.1 | ||
|---|---|---|---|
| Rivi 53: | Rivi 53: | ||
| transform.Translate(20*Time.deltaTime, | transform.Translate(20*Time.deltaTime, | ||
| } | } | ||
| - | |||
| - | var h = 30.0 * Time.deltaTime * Input.GetAxis(" | ||
| - | transform.Translate(h, | ||
| } | } | ||
| Rivi 140: | Rivi 137: | ||
| #pragma strict | #pragma strict | ||
| - | function | + | function |
| + | { | ||
| + | PalloOhjaus.xspeed = -PalloOhjaus.xspeed; | ||
| + | PalloOhjaus.collflag = true; | ||
| + | } | ||
| + | </ | ||
| + | Yhdistä skripti RajaVasen ja RajaOikea olioihin. | ||
| + | |||
| + | Lisätään vielä liipaisimet ja jäykän kappaleen ominaisuudet: | ||
| + | |||
| + | Valitse RajaVasen ja siitä kohta " | ||
| + | |||
| + | Talleta ja kokeile peliä. | ||
| + | |||
| + | Tee YläSeinä skripti: | ||
| + | < | ||
| + | #pragma strict | ||
| + | |||
| + | function OnTriggerEnter(other: | ||
| + | { | ||
| + | PalloOhjaus.yspeed = -PalloOhjaus.yspeed; | ||
| + | PalloOhjaus.collflag = true; | ||
| } | } | ||
| + | </ | ||
| - | function Update () { | + | Talleta skripti ja liitä se RajaYlä: |
| + | Aktivoi " | ||
| + | |||
| + | Tehdään seuraavaksi pallon tippumisen estävä skripti. Lisää Game object -> Create empty ja anna sille nimeksi RajaAla. Muuta paikaksi (0, -17, 0) ja kooksi (35,1,1) | ||
| + | |||
| + | Luo skripti PalloAlkuun | ||
| + | < | ||
| + | #pragma strict | ||
| + | |||
| + | function OnTriggerEnter(other: | ||
| + | { | ||
| + | other.transform.position = Vector3(0, -7, 0); | ||
| + | PalloOhjaus.xspeed = 8.0; | ||
| + | PalloOhjaus.yspeed = -8.0; | ||
| + | PalloOhjaus.launchtimer = 1.0; | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | Liitä skripti RajaAla:an. | ||
| + | |||
| + | Lisää mailaan " | ||
| + | |||
| + | Lisää pelaaja-skriptin loppuun | ||
| + | < | ||
| function OnTriggerEnter(other: | function OnTriggerEnter(other: | ||
| { | { | ||
| - | PalloOhjaus.xspeed | + | PalloOhjaus.yspeed |
| + | |||
| PalloOhjaus.collflag = true; | PalloOhjaus.collflag = true; | ||
| } | } | ||
| </ | </ | ||
| - | Yhdistä | + | Talleta ja kokeile! |
| + | |||
| + | Yleensä palloa voi ohjailla, sen voi lisätä muuttamalla äsken lisättyä koodia: | ||
| + | < | ||
| + | function OnTriggerEnter(other: | ||
| + | { | ||
| + | PalloOhjaus.yspeed = -PalloOhjaus.yspeed; | ||
| + | |||
| + | if (other.collider.gameObject.transform.position.x > gameObject.transform.position.x) | ||
| + | { | ||
| + | PalloOhjaus.xspeed = Mathf.Abs(PalloOhjaus.yspeed); | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | PalloOhjaus.xspeed = -Mathf.Abs(PalloOhjaus.yspeed); | ||
| + | } | ||
| + | |||
| + | PalloOhjaus.collflag = true; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Tiilet ===== | ||
| + | |||
| + | Miten saamme tehtyä nätisti tarpeeksi (120!) tiiltä peliin? Koodilla! | ||
| + | |||
| + | Luo tyhjä peliobjekti GameObject -> Create Empty ja anna sille nimeksi TiiltenTekijä. Luo skripti | ||
| + | |||
| + | < | ||
| + | #pragma strict | ||
| + | |||
| + | function Start () { | ||
| + | for (var y = 0; y < 8; y++) | ||
| + | { | ||
| + | for (var x = 0; x < 15; x++) | ||
| + | { | ||
| + | var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); | ||
| + | cube.transform.position = Vector3 (x*2 - 14, y - 1, 0); | ||
| + | cube.transform.localScale = Vector3 (1.9, 0.9, 1); | ||
| + | // | ||
| + | cube.collider.isTrigger = true; | ||
| + | cube.renderer.material.color = Color(0.2 + y*0.08, 0.3, 1.0); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | Talleta ja kokeile peliä! | ||
| + | |||
| + | Muutetaan pelin valaistusta. Siirrä valon tyypiksi Directional (inspektorista) ja Intensity arvoon 0.63. Tiilten pitäisi näyttää nyt paremmilta. | ||
| + | |||
| + | Muuta äskeistä skriptiä seuraavasti: | ||
| + | < | ||
| + | #pragma strict | ||
| + | |||
| + | function Start () { | ||
| + | for (var y = 0; y < 8; y++) | ||
| + | { | ||
| + | for (var x = 0; x < 15; x++) | ||
| + | { | ||
| + | var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); | ||
| + | cube.transform.position = Vector3 (x*2 - 14, y - 1, 0); | ||
| + | cube.transform.localScale = Vector3 (1.9, 0.9, 1); | ||
| + | // | ||
| + | cube.collider.isTrigger = true; | ||
| + | // | ||
| + | if (y < 2) | ||
| + | cube.renderer.material.color = Color.yellow; | ||
| + | else if (y < 4) | ||
| + | cube.renderer.material.color = Color.cyan; | ||
| + | else if (y < 6) | ||
| + | cube.renderer.material.color = Color.blue; | ||
| + | else | ||
| + | cube.renderer.material.color = Color.red; | ||
| + | |||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | Väreistä tulee hieman kirkkaampia :-) | ||
| + | |||
| + | ===== Pelattava versio ===== | ||
| + | |||
| + | Kirjoitetaan skripti, joka poistaa tiilen ja laittaa pallon pomppaamaan törmäyksestä tiileen. | ||
| + | |||
| + | Luo JavaScript, anna sille nimeksi TiiliSkripti ja kirjoita: | ||
| + | < | ||
| + | #pragma strict | ||
| + | |||
| + | function OnTriggerEnter(other: | ||
| + | { | ||
| + | if(PalloOhjaus.collflag == true) | ||
| + | { | ||
| + | PalloOhjaus.yspeed = -PalloOhjaus.yspeed; | ||
| + | PalloOhjaus.collflag = false; | ||
| + | Destroy(gameObject); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Poista kommentti-merkit (%%//%%) TiilenTekijä-skriptistä rivin 11 alusta. | ||
| + | |||
| + | Talleta ja kokeile! | ||
| + | |||
| + | ===== Pisteet ===== | ||
| + | |||
| + | Lisää GameObject -> Create Empty ja anna sille nimeksi Pisteet. Luo skripti Pisteet: | ||
| + | < | ||
| + | #pragma strict | ||
| + | |||
| + | static var score: int; | ||
| + | static var lives: int; | ||
| + | |||
| + | function Start () { | ||
| + | score = 0; | ||
| + | lives = 3; | ||
| + | } | ||
| + | |||
| + | function Update () { | ||
| + | |||
| + | } | ||
| + | |||
| + | function OnGUI() | ||
| + | { | ||
| + | GUI.Box(Rect(10, | ||
| + | GUI.Box(Rect(Screen.width - 100, | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Mieti, miten saat pelin pisteet toimimaan oikein? (Ja toteuta se) | ||
| ===== Valmis koodi ===== | ===== Valmis koodi ===== | ||
| - | {{: | + | {{: |
| + | |||
| + | ==== Pong-pelin paketti ==== | ||
| + | |||
| + | {{: | ||
peliohjelmointi.1396462253.txt.gz · Viimeksi muutettu: 2015/08/13 07:18 (ulkoinen muokkaus)
