Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
japaja
Založen: 07. 02. 2012 Příspěvky: 106
|
Zaslal: 24. březen 2014, 19:19:05 Předmět: Roll-ball |
|
|
Zdravim tu do tejto časti fora som nikdy ničim neprispel to čo sem hodim v podstate ešte nema ani menu zrobene keďže riešim ovladanie guli/koule
"Vo co go":Už skôr som chcel zrobiť niečo hratelne skušal som VHE-(editor pre cs 1.6,L4D2 a ine), CryEngine 1/2/3, gamemaker, opengl a unity
ostal som pri unity keďže je toho na YT dosť veľa a nenašiel som to a tak by som vas tuna pritomnych chcel trošku otravovať s mojim aktualnym problemom a možno nebude jediny
O Hre: Tuto jednoduchu myšlienku som dostal keď som robil tutorial na oficialnej stranke unity a bolo to otom ako pozbierať peniaze a hra sa skonči no ja som si povedal že to trochu upravim rožširim a bude to trochu ine určite nie jedinečne keďže takych hier je kopu v odkaze prikladam ako tak hrateľnu verziu. O čo upravene to bude, v každom levely sa spoznate s novou prekažkou a budete ju musieť prekonať napriklad ako točiaca sa palica a ine veci.
O probleme: Snažim sa vyriešiť skakanie guli/koule (prikladam aj script) guľa sama o sebe sa toči pohybom no a ja by som chcel že keď stlačim medzernik tak guľa nadskoči no problem nastava vtedy keď medzernik stlačim 20x za sebou tak guľa je niekde preč.. a chcel by som tomu zamedziť jedna vec čo ma napadla bolo použiť iny objekt na guľu/koule a zamedziť vyššiemu skoku no ajtak to nevyzera pekne a teoreticke riešenie vidim take že keď guľa/koule je na zemi skakanie je aktivne takzvane "true;" a keď je vo vzduchu a nedotyka sa podlahy tak je "false;" no s tymto neviem pohnuť
kód: |
using UnityEngine;
using System.Collections;
public class Movement : MonoBehaviour
{
public float gravity;
public float speed;
public float jumpSpeed;
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rigidbody.AddForce(movement * speed * Time.deltaTime);
if (Input.GetButtonDown("Jump"))
{
rigidbody.velocity = new Vector3(0, jumpSpeed, 0);
}
}
} |
Download:http://uloz.to/x5td1NVr/test-kocky-zip
Budem rad ak mi niekto s tym pomôže lebo na YT som našiel navody no neni to prave ono čo by na to pasovalo. _________________ skype: dead.lol1 |
|
Návrat nahoru |
|
|
McMagic
Založen: 06. 08. 2012 Příspěvky: 615
|
Zaslal: 25. březen 2014, 15:07:04 Předmět: |
|
|
Dej si tam bool (public ci private dle toho jak sni budes pracovat) co bude hlidat pokud koule skace.
viz ukazka.
Logicky musis jeste itsJump dat zase na false az koule dopadne na zem ci splni podminku pro dalsi skok.
kód: |
using UnityEngine;
using System.Collections;
public class Movement : MonoBehaviour
{
public float gravity;
public float speed;
public float jumpSpeed;
public bool itsJump = false;
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rigidbody.AddForce(movement * speed * Time.deltaTime);
if(!itsJump){
if (Input.GetButtonDown("Jump"))
{
itsJump = true;
rigidbody.velocity = new Vector3(0, jumpSpeed, 0);
}
}
}
}
|
_________________
http://www.mcmagic-productions.com/ |
|
Návrat nahoru |
|
|
japaja
Založen: 07. 02. 2012 Příspěvky: 106
|
Zaslal: 25. březen 2014, 15:49:10 Předmět: |
|
|
ale ved logicky ked to dopadne tak by sa to malo zopakovat nie? _________________ skype: dead.lol1 |
|
Návrat nahoru |
|
|
McMagic
Založen: 06. 08. 2012 Příspěvky: 615
|
Zaslal: 25. březen 2014, 16:13:07 Předmět: |
|
|
japaja napsal: |
ale ved logicky ked to dopadne tak by sa to malo zopakovat nie? |
Musíš si hlídat dopad a pak dat zase skok na true.
No a pak záleží co s tím přesně chceš dělat;)
Můžeš nastavit limit na max výšku atd. (vyrušit pak další skok)
Nebo pokud chceš aby po dopadu ještě poskočila?
Je x možností co s tím můžeš provést - vždy se ale musíš zachytit nějakého argumentu co to bude hlídat/omezovat určovat pravidla. _________________
http://www.mcmagic-productions.com/ |
|
Návrat nahoru |
|
|
japaja
Založen: 07. 02. 2012 Příspěvky: 106
|
Zaslal: 25. březen 2014, 16:15:29 Předmět: |
|
|
ved toto praveže neviem keďže unity dokumentacia o bool,if veľa nehovori _________________ skype: dead.lol1 |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 25. březen 2014, 16:22:22 Předmět: |
|
|
No, hlavně by měla vyskočit, jen když se dotýká země ne? Jako analogie s nějakým panáčkem, který se odrazí nohama. Takže bys tam měl přisat test, jestli je koule a zemi (if position.y...). Samotný skok děláš myslím správně nastavením rychlosti, ale lepší by možná bylo použít Rigidbody.AddForce s ForceMode.VelocityChange . Je to trochu matoucí, že to mají ve funkci AddForce, protože velocity neni force, ale myslím, že to bude dělat, co potřebuješ. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
japaja
Založen: 07. 02. 2012 Příspěvky: 106
|
Zaslal: 25. březen 2014, 16:44:10 Předmět: |
|
|
praveže aj to som skušal no ja programovanie neovladam to znamena keď mi poviete nech si urobim podmienku tak akurat wut _________________ skype: dead.lol1 |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 25. březen 2014, 16:50:06 Předmět: |
|
|
Nojo, tak to je potom těžký :). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
japaja
Založen: 07. 02. 2012 Příspěvky: 106
|
Zaslal: 25. březen 2014, 16:52:26 Předmět: |
|
|
ale nejaky navod ako sa presne tieto veci mechanizmy naucit by nezaskodil _________________ skype: dead.lol1 |
|
Návrat nahoru |
|
|
japaja
Založen: 07. 02. 2012 Příspěvky: 106
|
Zaslal: 25. březen 2014, 16:55:57 Předmět: |
|
|
ha! asi som na to prišiel čo tak na spodok hodiť
void OnCollisionEnter("nazovtej veci kde to ma spadnut aby bolo true")
itsJump=true; _________________ skype: dead.lol1 |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 25. březen 2014, 16:57:43 Předmět: |
|
|
Nejlepší je, posadit se k tomu na nějaký čas a velmi bolestivou cestou zkoušet, přemýšlet a číst dokumentaci. S googlem a diskuzema jako šafránu. Hledat spíš už velmi konkrétní věci, ne hesla typu "how to make jump in c sharp". To se ti neposmívám, vím, že přirozená lenost k tomu svádí. Vsadím se, že když tomu věnuješ dnešní večer, tak zítra budeš moudřejší a kde kdo rád odpoví na tvé konkrétní dotazy.
EDIT: no vida! A to je teprv začátek :) Přeju hodně radosti z těchto dílčích úspěchů :). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
japaja
Založen: 07. 02. 2012 Příspěvky: 106
|
Zaslal: 25. březen 2014, 17:02:55 Předmět: |
|
|
a nasiel som si v tom chybu lebo ked dam zase treu porusim tym podmienku co bola prva false a kedze to bolo false mohol som zrobit skok a to co som sem napisal som si to tym zablokoval takze by malo byt
void OnCollisionEnter()
{
itsJump=false;
} _________________ skype: dead.lol1 |
|
Návrat nahoru |
|
|
McMagic
Založen: 06. 08. 2012 Příspěvky: 615
|
Zaslal: 25. březen 2014, 17:36:10 Předmět: |
|
|
no dle všeho jsi ten script nekde nasel na netu - ze jo?
A nevis vlastne jak moc extra funguje (viz i ten OnCollisionEnter).
Musis zacit polopate a urcit si logiku co chces proc a jak.
tj. mas kouli.
ta ma po zmacknuti "space" poskocit a dopadnout.
ale nesmi poskocit kdyz uz skace
takze kdyz nepouzijes kolize ani rigidbody atd. ale jen cisty objekt a udelas to prasacky, ale tak ze pochopis o co jde
Zde je rychlo kod - ukaze ti co jak funguje - je to prasarna, ale ukazuje jak funguje if a bool mel by jsi z toho pochopit zaklad;)
Logicky rigidbody a gravitace pak za tebe dela x veci a nemusis ridit pohyb tak jako nize ve scriptu, ale je to ukazka toho co to vlastne dela a jak si urcovat podminky.
(viz i nase PM komunikace, kdy jsem pochopil ze jsi v zacatcich;) ) musis hledat na googlu kolem unity je tam toho spousta. Ale hlavni je si urcit zakladni logiku a vedet co proc jak;)
kód: |
using UnityEngine;
using System.Collections;
public class test01 : MonoBehaviour {
public GameObject koule;//objekt koule
public bool kouleSkace = false;//bool
public Transform kouleTransform;//transform koule
public Vector3 koulePozice;//v3 pozice koule
public float maxSkokVyska = 5f;//maximalni vyska Y pro skok
public float minSkokVyska = 0f;//hladina Y zeme (virtualni)
public bool skokDosahlMax = false;
// Use this for initialization
void Start () {
koule = this.gameObject;//nastavis objekt
kouleTransform = this.gameObject.transform;//nastavis transform objektu
//fixnes si kouli na zem
kouleTransform.position = new Vector3(0f,minSkokVyska,0f);
}
// Update is called once per frame
void Update () {
//hlidas pozici
koulePozice = kouleTransform.position;
//detekujes zdali skok je false
if(!kouleSkace){
if ( Input.GetKeyDown("space") ) {
//nastavis skok na true
kouleSkace = true;
}
}
//detekujes zdali skok je true
if(kouleSkace){
//POKUD KOULE NEDOSAHLA MAX
if(!skokDosahlMax){
if(koulePozice.y < maxSkokVyska){
kouleTransform.position += new Vector3(0f,0.2f,0f); //pohyb nahoru
}else{
skokDosahlMax = true;//skok je na maximu
}
}
//kdyz koule dosahne MAX
if(skokDosahlMax){
if(koulePozice.y > minSkokVyska){
kouleTransform.position -= new Vector3(0f,0.2f,0f); //pohyb dolu
}else{
//koule dopadla na ZEM
kouleSkace = false;
skokDosahlMax = false;
}
}
//
}
}
}
|
_________________
http://www.mcmagic-productions.com/ |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 25. březen 2014, 19:39:38 Předmět: |
|
|
japaja napsal: |
ale nejaky navod ako sa presne tieto veci mechanizmy naucit by nezaskodil |
Myslíš návod na if a bool?
japaja napsal: |
ved toto praveže neviem, keďže unity dokumentacia o bool, if veľa nehovori |
Tak googli pro použitý programovací jazyk, v tomhle případě asi C#: if, bool _________________ Award-winning game developer |
|
Návrat nahoru |
|
|
|