- iOS alkalmazások
- Mégse száll ki a Meizu?
- Fotók, videók mobillal
- Okosóra és okoskiegészítő topik
- Honor Magic5 Pro - kamerák bűvöletében
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Azonnali mobilos kérdések órája
- Nothing Phone (1) - nem semmi (2)
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- iPhone topik
Hirdetés
-
Mindent megtudtunk az új Nokia 3210-ről
ma Részletes képek, specifikációk és euróban megadott ár is van a legendás modell újraélesztett verziójához.
-
Egyre nagyobb a balhé a Helldivers II körül
gp Úgy tűnik, hogy egyre több sötét felhő kezd gyűlni a játék körül a Sony döntése miatt.
-
Letartóztatták a bitcoin-Jézust
it Amerikai adókerülés vádjával, Spanyolországban tartóztatták le a bitcoin-Jézusként ismert Roger Vert.
Új hozzászólás Aktív témák
-
trisztan94
őstag
válasz Denyboygod #935 üzenetére
Én, mint junior programozó 250-300k alatt nem állnék veled szóba De mondjuk én mindig megkérem az áram.
ON:
Sziasztok!
Belekezdtem az Android programozásba, eddig minden szép és jó.
Ubuntu alatt vagyok, fenn volt már nekem korábban is JAVA miatt az Eclipse, ezért nem az eclipse-s sdk-t szedtem le hanem az ADT-t meg a SDK Tools-t raktam bele a már meglévő telepítésembe. Minden tök jól működik, egy problémám van csak. Futtatni szeretném saját telcsimen az alkalmazást, rámegyek az eclipse-ben a Run gombra. Ott elvileg kéne, hogy felajánlja az Android Application-t, mint lehetőség, de csak az van, hogy "(none applicable)""Open one of your project's files and click Run from the toolbar.
In the Run as window that appears, select Android Application and click OK.Mit kő' ezzel csinálni?
Ápdét:
se az "android", se az "adb", se az "ant build" parancsot nem ismeri a terminálom. Mit csinálok rosszul?[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
Köszönöm szépen mindhármotoknak, végül leszedtem a bundle-t, nagyon ótvar volt így
A PATH-ba tényleg bele kelett rakni a platform tools-ot és a sdk tools-ot. Nem írta a google oldala
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz SektorFlop #950 üzenetére
DDSM az micsodá?
A rendszer felismeri, kidobja, hogy galaxy nexus. Szerintem rosszul adtam hozzá a PATH-hoz az androidot illetve a függőségeit, de már kezd nagyon tele lenni a fszom vele
Azt gondolná az ember, hogy linuxon sokkal jobb lesz az android dev, mert ugye az is azon alapul ....
Egy sima hello world-öt sem ír ki, semmi.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz SektorFlop #952 üzenetére
Hagyom a linuxot felraktam ugyanúgy WIN7-re is az ADT bundle-t, de itt is ugyanaz a probléma, semmi sem történik, hozzáadtam a path-hoz a az sdk-t és a platform tools-ot is, de semmi, cmd-ben az ant debug, illetve android* parancsokra azt írja, hogy nem ismeri. DDSM viszont megtalálja a telit.
Logcat sem ír semmit az ég világon[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz trisztan94 #954 üzenetére
Nem tudom már szerkeszteni, megoldódott.
Nem a projekt mappája volt kiválasztva a package explorerben, hanem a main activity. Azért valami üzit írhatott volna, hogy oda kattintsakKöszi a segítséget!
https://heureka-kreativ.hu
-
trisztan94
őstag
Sziasztok!
Van valami jó kis framework játék progra? Esetleg valami segítő cucc? Sajnos nem találtam sehol "hello world"-ös játék készítő tutorialt, azt sem tudom hogyan kezdjek bele
https://heureka-kreativ.hu
-
trisztan94
őstag
-
trisztan94
őstag
Sziasztok!
Lehet azt valahogy csekkolni, hogy van-e a keszuleknek elso kameraja?
https://heureka-kreativ.hu
-
trisztan94
őstag
Köszönöm, pörfikt!
SektorFlop
Na erre nem is gondoltam, majd megkérem a felhasználót, hogy ellenőrizze le, hogy van-e első kamerája és aszerint nyomjon a megfelelő gombra (van első kamerám, nincs első kamerám)
Vagy hogy ne kelljen nyomkodnia rákeresek google-on a készülékre, megnyitom valamelyik képet, majd egy képátnéző algoritmussal megnézem, hogy ott van-e a kép egyik sarkában a kamera
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
Egy random mozgó képet (jelen esetben egy "play" "gomb") mivel a legcélszerűbb kigenerálni, melyik layout fajtával?
Én a relative-ra gondoltam, de nagyon új még nekem ez, lehet van rá egyszerűbb megoldás
libgdx alapú játékot fejlesztek, tehát class-ekből generálok minden "layout"-ot.
https://heureka-kreativ.hu
-
trisztan94
őstag
Eszembe sem volt a View tologatás
Egy képet animálnék random pozícióra. Ezt szeretném valahogy megoldani, de libgdx-es tutorialokban szinte csak table layout-ot használnak, ami (html-es tapasztalatomból merítve) szerintem nem annyira mozgatható össze-vissza, nem?
Szval egy .java class-ből lenne kirajzolva a render metódusban mindig egy más pozícióra (az animálás ráér később, csak működjön) miután elérte a korábba kitűzött pozíciót.
:
kezdés 0,0 -> irány 20, 10
ha elérte a 20,10 -> irány 50, 30Ezek ugye mindig random vannak generálva, de érted a lényeget
https://heureka-kreativ.hu
-
trisztan94
őstag
Valaki meg tudja nekem mondani, hogy az alábbi listener miért nem működik? Se logcat, se console nem dob hibát, még csak warning sincs rá. Semmi. Próbáltam androidon, desktopon is futtatni semmi.
Libgdx-ről lenne szó
TextButton startGameButton = new TextButton( "Start game", getSkin() );
startGameButton.addListener( new InputListener() {
public void touchUp(
InputEvent event,
float x,
float y,
int pointer,
int button )
{
super.touchUp( event, x, y, pointer, button );
game.getSoundManager().play( HowDrunkAreYouSound.CLICK );
//game.setScreen( new StartGameScreen( game ) );
}
} );Mint mondtam, semmi, de semmi nem történik. Hangot teszteltem máshogy, működik, tehát be sem lép a metódusba. Debugger szimplán átugorja.
Ez amúgy egy kicsit módosított kód, ez volt az eredeti amit csórtam:
TextButton optionsButton = new TextButton( "Options", getSkin() );
optionsButton.addListener( new DefaultActorListener() {
@Override
public void touchUp(
ActorEvent event,
float x,
float y,
int pointer,
int button )
{
super.touchUp( event, x, y, pointer, button );
game.getSoundManager().play( TyrianSound.CLICK );
game.setScreen( new OptionsScreen( game ) );
}
} );De ez valszeg a scene2d korábbi verziójával működött, mert hibákat dobál:
.addListener-re: The method addListener(EventListener) in the type Actor is not applicable for the arguments (new DefaultActorListener(){})
new DefaultActorListener() {..}-re : DefaultActorListener cannot be resolved to a type
ActorEvent event-re: ActorEvent cannot be resolved to a type
Nézegettem a scene2d dokumentációját, onnan lestem, hogy mikkel kéne átírni:
"actor.addListener(new InputListener() {
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
System.out.println("down");
return true;
}
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
System.out.println("up");
}
});"Bocsánat, ha nagyon láma kérdés, de egyszerűen semmit sem tudok a jelenséggel kezdeni
Köszönöm!
https://heureka-kreativ.hu
-
trisztan94
őstag
Sziasztok!
Egy olyan játékot próbálok készíteni libdgx segítségével, hogy van egy karika és azt egy zsinóron kell áthúzni úgy, hogy a karika nem érhet hozzá a zsinórhoz (nem tudom a nevét mi ez? )
Na, tehát a lényeg, egy "zsinórt" próbálok generálni, mindig random módon. Mi erre a legegyszerűbb megoldás?
Jelenleg egy 25*19-es koordináta rendszerben van a game.
Az első pozíció az x tengelyen mindig fix 1, ez a külső ciklus számlálója lesz (az x tengely)
karika = new Karika(new Vector2(0, 9));
int randomY;
int nextRandom;
int startPosY = generator.nextInt(19);
for (int i = 1; i < 24; i = i+2) {
//azért 1-23-ig megy a ciklus, hogy elöl és hátul is kihagyjon egy kis helyet a karika kezdőpontjának illetve a célnak.
for (int j = 0; j<19; j++) {
if(i == 1) {
randomY = generator.nextInt(18);
lines.add(new Line(new Vector2(i, startPosY)));
}
else{
randomY = generator.nextInt(18);
nextRandom = generator.nextInt(3);
if(nextRandom == 0) {
lines.add(new Line(new Vector2(i, (19 - randomY))));
break;
}
else if(nextRandom == 1) {
lines.add(new Line(new Vector2(i, randomY)));
break;
}
else if(nextRandom == 2) {
lines.add(new Line(new Vector2(i, (19-randomY))));
//kilépünk a belső (y tengely) ciklusból minden téglalap lerakása után, mert egy x koordinátához csak egy y koordináta mehet
break;
}
}
}
}Na most ez nekem kigenerál egy ilyen szépséget (persze ez mindig változik, de hasonló):
Ezeket a lila téglalapokat szeretném összekötni egy "zsinórral", létrehozván a pályát:
Na most ugye itt az a fő kérdés, hogy hogy tudom őket összekötni?
Egyáltalán jó lesz ez így? (később collition detectionnal észlelem majd ha hozzáér a "karika" külseje. -- a most bent lévő png csak teszt szempontjából van benne )Hogy lenne ezt a legegyszerűbb megoldani?
Köszönöm!
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz PandaMonium #990 üzenetére
"a NURBS jó lehet"
Pont ez kell nekem, köszönöm!
"valami nagyon alap fizikai motoron is érdemes elgondolkodni"
Ez szintén nagyon jó ötlet, de viszont fogalmam sincs hogyan kezdjek bele. Van esetleg erre valami kész framework/library?
https://heureka-kreativ.hu
-
trisztan94
őstag
-
trisztan94
őstag
Lehet valahogy id-t (vagy akármilyen megjelölőt) adni egy renderelt objektumnak?
Ebben a hsz.-emben lévő kódot szeretném módosítani, úgy, hogy a lerakott Line-nak adjak egy id-t.
lines.add(new Line(new Vector2(xPozicio, yPozicio)));
Végül nem a Nurbs Curve-t fogom implementálni, egyetlen library-t találtam java-hoz, de az baromi nagy, nem kell nekem ekkora funkcionalitás.
Azért kell az id, hogy meg tudjam adni az összekötő "vonalak" kezdőpontját illetve végpontját (id1-től id2-ig egy vonal, stb..)
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz PandaMonium #995 üzenetére
Köszönöm szépen!
Megyeget már, ha bajom van ordítok
https://heureka-kreativ.hu
-
trisztan94
őstag
Hát akkor már inkább libgdx Igaz, AndEngine-nek sosem néztem utána, de sokkal "mature"-ebbnek néz ki a libgdx. Meg azért ott van dokumentáció.
Más:
Lehet rá tudom venni magam és az ügyfelem, hogy átlálljunk unity3d-re. A free version miben korlátoz? Nem kellenek nekem bele unity-t reklámozó dolgok, tudjam deploy-olni droidra, stbstb.. Vagy ehhez mindenképp a pro kell? (arra meg nincs keret)
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
Lehet megnézem majd ezután a projekt után, köszi
Más:
A universal tween engine-t szeretném belerakni utólag a libgdx-es projektembe. Ugye ez az, amit a setup ui felajánl a projekt létrehozásakor egy checkbox formájában. (csak akkor úgy gondoltam, hogy ez nekem nem kell)
Letöltöttem a két .jar fájlt az oldalukról . Hogy tudom most ezt hozzáadni a projektemhez?
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz WonderCSabo #1022 üzenetére
Ja csak ennyi? És akkor tudom használni? (gondolom clean kell, nem?)
https://heureka-kreativ.hu
-
trisztan94
őstag
Sziasztok!
Van egy touchDragged figyelőm libgdx játék alatt, ami így néz ki:
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
karika = world.getKarika();
Vector2 pos = new Vector2(screenX, screenY);
karika.setPosition(pos);
return false;
}Na most itt ugye annyit csinálunk, hogy a karika mindig arra a pozícióra menjen ahová az ujjunkat húzzuk.. Balra és jobbra szépen megy, de valamiért a fel-le felcserélődik, tehát amikor felfele húzom az ujjam, akkor lefele megy, amikor lefele húzom az ujjam, akkor felfele. Miért van ez? Mivel lehet megoldani?
Köszi!
Szerk:
Más: Azt hogyan lehet megoldani, hogy egy objektum ne tudjon "kimenni a pályáról"? (tehát mintha fal lenne ott v nemtom)
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
-
trisztan94
őstag
válasz PandaMonium #1031 üzenetére
Valóban nem vagyok képben, de egyszer meg kell tanulni
Sajnos én csak magamtól tanulok, könyvekből nagyon nem megy, max videókból. Kell nekem 1-2 hét mire belerázódok, megismerem a környezetet, stbstb, de addig bombázlak majd titeket a hasonló kérdéseimmel, előre is bocsi
Eddig nem hogy játék fejlesztéssel, de még java-val sem foglalkoztam, így kicsit nehezebb az az indulás, de érzem, hogy menni fog
Ui: szerintem esti brainstorm-olásom következménye lett az eddigi legrondább kód amit írtam, és amit valszeg holnap rögtön ki is javítok. De legalább működik. Akár meg is leshetitek itt.
Meg ne kérdezzétek, hogy mi mit jelent, fogalmam sincs, működik de mondom, ez majd valamelyik tisztább pillanatomban el fog tűnniEzt generálom vele amúgy tök random (a "csövet")
https://heureka-kreativ.hu
-
trisztan94
őstag
Üdv néktek!
Egy collision detection-ös gyorskérdésem lenne:
Van ez a karika:
Szerk: úgy néz ki valami hiba történt a képpel, a következő képen látni, hogy ez egy "átlátszó" karikaErre szeretnék egy olyan collision detection-t írni, hogy csak a karika fenti és lenti részén érzékelje, valahogy így: (a zöld részeken érzékelje)
A másik dolog az, hogy egy "csövön lenne áthúzva", most így néz ki:
Itt ugye nyílván az a cél, hogy a baloldalán a cső "fölött" legyen, tehát ne fedje le a cső, viszont a jobb oldalán fedje le, létrehozván egy olyan illúziót, hogy a karikát áthúzzuk a csövön.
Eddig érthető?
Én ezt úgy gondoltam ki, hogy 4 felé vágom a képet, "összerakom" őket kódban, hogy egy képnek nézzen ki, és a különböző darabokra kötöm a collision detection-t.. ez így hülyeség?
Bocsi, ha nagyon alap kérdés! Köszönöm!
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz PandaMonium #1037 üzenetére
Köszönöm szépen, sikerült megoldani vele! (az utolsó kivételével, de az még mindegy )
https://heureka-kreativ.hu
-
trisztan94
őstag
Sziasztok!
Box2D-vel kapcsolatban, azon belül collision detection-nel illetve Physics Body Editorral kapcsolatban kérdeznék.
A helyzet változatlan, van egy karikám, szeretném, ha érzékelné a játék, ha a karika teteje hozzáér a csőhöz.
PandaMonium ajánlotta erre a Physics Body Editor nevezetű csodás programot.Először is ezzel kapcsolatban kérdeznék:
Rajzoltam két shape-t a collision-re figyelő részeken:
Ugye itt a teteje és az alja a lényeges. Nézegettem a tool oldalán lévő tutorialt, a sample alkalmazást is, de arra sehogy sem tudok rájönni, hogy hogyan lehetne egy mozgó képre rárakni azt a két shape-t. Mert ugye a karikám touchDrag-re mozog oda ahová húzzuk, de akárhányszor elhúzom ez fogad:
Persze itt alapból rendesen illeszkedik a képre, csak arrébb húztam, hogy látszódjon. Nem megy a képpel a maszk.. Jelenleg így van definiálva az egész a create() metódusomban:
BodyEditorLoader karikaLoader = new BodyEditorLoader(Gdx.files.internal("data/collision-masks/karika.json"));
BodyDef karikaDef = new BodyDef();
karikaDef.type = BodyType.DynamicBody;
karikaDef.position.set(karika.getPosition().x, karika.getPosition().y);
karikaDef.angle = karika.getRotation();
karikaBody = world.createBody(karikaDef);
FixtureDef karikaFixture = new FixtureDef();
karikaFixture.density = 0.5f;
karikaFixture.friction = 0.8f;
karikaFixture.restitution = 0.6f;
karikaLoader.attachFixture(karikaBody, "karika", karikaFixture, karika.getWidth());
karikaBodyOrigin = karikaLoader.getOrigin("karika", karika.getWidth()).cpy();Hogy kéne azt megoldani, hogy a maszk mozogjon vele együtt? Arra már rájöttem, hogy a render() metódusban kéne lennie, de akárhogy próbálgattam helyezgetni a dolgokat (pl: KarikaDef.position-t beraktam a render metódusba mindig a karika draw-olása után), de valamiért sehogy sem működik.
Viszont ami működik rendesen az a gravitáció. Na de kitaláljátok, hogy mire működik a gravitáció? Hát persze, hogy a DebugRenderer-rel kirajzolt maszkra (amiről eddig szó volt). A karikára hogy tudom rárakni? (Igazából az sem tiszta, hogy most a karika textúrámból hogy tudok egy Body-t csinálni amire aztán ráerősítem a maszkot )
Na, most így hirtelenjében ennyi. A collision detection-ös kérdésemet csak azután teszem fel miután ezt sikerült megoldani (vagy elküldtetek a picsába )
Köszönöm szépen előre is!!
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz trisztan94 #1046 üzenetére
Még hozzátennék egy gyorskérdést:
van ez a ciklusom:
while(tubeIterator.hasNext()){
tube = tubeIterator.next();
BodyDef tubeDef = new BodyDef();
tubeDef.type = BodyType.StaticBody;
tubeDef.position.set(tube.getPosition().x, tube.getPosition().y);
tubeBody = world.createBody(tubeDef);
tubeLoader.attachFixture(tubeBody, "tube", tubeFixture, tube.getWidth());
tubeBodyOrigin = tubeLoader.getOrigin("tube", tube.getWidth()).cpy();
}itt végigiterálok egy tömbön, melyben a "csődarabok" pozíciója van letárolva. Mindig szélesség / 25 darab csődarab van (mert 25px széles egy db), de ez igazából lényegtelen. Úgy oldottam meg a physics mask rátételét az összes darabra, hogy ebbe a ciklusban mindig létrehozom a BodyDefiníciót, mindig ráerősítem a body-ra azt illetve a fixture-t is minden egyes darabhoz "felcsatolom".
Nem túl memóriazabáló ez így? Lehet ezt szebben megoldani?
https://heureka-kreativ.hu
-
trisztan94
őstag
Hogy tudom azt nézni inputhandler-ben, hogy a textúrára érkezett-e a drag event?
public boolean touchDragged(int screenX, int screenY, int pointer) {
if(Gdx.input.isTouched()){
Vector3 touchPos = new Vector3();
touchPos.set(Gdx.input.getX(), Gdx.input.getY()*(-1), 0);
karika.setPosition(new Vector2(touchPos.x - 106 / 2, touchPos.y + 238*2));
}
}
return true;
}Így ugye mindig a drag helyére ugrik a textúrám, de én azt szeretném, hogy csak akkor történjen meg a drag, ha a textúrát húzza.. értitek
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz PandaMonium #1054 üzenetére
Elfelejtettem válaszolni, bocsi
Köszönöm szépen, pont erre volt szükségem, meg is oldottam vele.
https://heureka-kreativ.hu
-
trisztan94
őstag
Mennyire lehetséges jó minőségű, gyors alkalmazásokat készíteni Cordovával és /vagy PhoneGap-pel? Mivel én alapból webes területen dolgozom, nagyon megkönnyítené a dolgom a html-css-js használata mobil alkalmazásokban, csak az a kérdés, hogy mennyire életszerű a dolog... van valakinek tapasztalata velük? Esetleg egy pro-con összefoglalás ez és a natív (java) alkalmazások között?
Mennyire jó szempont a cross-platform ?
https://heureka-kreativ.hu
-
trisztan94
őstag
Sziasztok!
libgdx-el és box2d-val kapcsolatban lenne egy kérdésem.
Hogy tudok egy Body-nak adni egy saját "nevet"?
Jelenleg így van beállítva egy body nekem:
groundDef = new BodyDef();
groundDef.type = BodyType.StaticBody;
groundDef.position.set(new Vector2(0, 0));
groundBody = world.createBody(groundDef);
groundShape = new PolygonShape();
groundShape.setAsBox(800, 10);
groundFixture = new FixtureDef();
groundFixture.shape = groundShape;
groundFixture.density = 1f;
groundFixture.friction = 1f;
groundFixture.restitution = 0f;
groundFixture.filter.categoryBits = CATEGORY_GROUND;
groundFixture.filter.maskBits = MASK_GROUND;
groundBody.createFixture(groundFixture);
groundBody.setUserData("ground");A legutolsó sorban hozzáadtam a userData-hoz a "ground" nevet, de mintha nem is lenne ott.
Ilyen a contact listenerem:
@Override
public void beginContact(Contact contact) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
Gdx.app.log("beginContact", "between " + fixtureA.toString() + " and " + fixtureB.toString());
}
...Amikor két body ütközik, akkor kiír egy baromi hosszú kódot arra, hogy melyik két body ütközött:
beginContact: between com.badlogic.gdx.physics.box2d.Fixture@69dbb4d1 and com.badlogic.gdx.physics.box2d.Fixture@573c3ba2
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
Nagyon szépen köszönöm!
Arra esetleg valami egyszerű megoldás, hogy két specifikus body között történt-e ütközés?
Most úgy csinálnám, hogy:
if(fixtureA == "valami" && fixtureB == "masik" || fixtureA == "masik" && fixtureB == "valami"){
//do
}Tehát ugye fordítva is meg kell néznem. Mondjuk ez nem olyan nagy dolog, de ha mégis van rá valami egyszerű megoldás, akkor azt használnám (libgdx box2d dokumentációja sajnos nagyon sok helyen "coming soon" )
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz trisztan94 #1083 üzenetére
Szerk: (#1084) hunfatal: Köszönöm, megnézem majd
Még egy dolgot kérdeznék
A collision detection eddig így volt megoldva:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
if (raindrop.y + 64 < 0) {
dropped++;
iter.remove();
}
if (raindrop.overlaps(bucket)) {
dropSound.play();
catched++;
iter.remove();
}
}Amikor összeér a vödör és a csepp, akkor nagyon szépen eltűnt a csepp és lejátszotta a hangot.
Ez amúgy a libgdx "Simple app" tutorialján alapszik, csak átalakítanám box2d-re (gravitáció, "szél" [x tengelyen gravitáció], box2dlight, stbstb miatt)Tehát beraktam ez helyett a box2d-s collision detection-t. így:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
world.setContactListener(new ContactListener() {
@Override
public void beginContact(Contact contact) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
if ((String) fixtureA.getBody().getUserData() == "bucket" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "bucket") {
//csepp és vödör ütközik
dropSound.play();
catched++;
iter.remove();
}
if ((String) fixtureA.getBody().getUserData() == "ground" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "ground") {
//csepp és föld ütközik
dropped++;
iter.remove();
}
}
@Override
public void endContact(Contact contact) {}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {
// TODO Auto-generated method stub
}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}
});
}Viszont az iter.remove()-ra ezt a hibát dobja:
"Cannot refer to a non-final variable iter inside an inner class defined in a different method"
Ráraktam az iterátorra a "final" modifikációt, akkor nem hibázik, de amikor valami ütközik (csepp - talaj, csepp - vödör), akkor nem az tűnik el amelyik ütközött, hanem egy tök random.
Értitek, hogy mit magyarázok? Tudok készíteni egy videót a dologról, ha kell.
Köszönöm szépen előre is a segítséget!
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
Van egy sprite-om ami 300px széles, és ki kellene tölteni egy 800px széles window-t. Hogy lehet ezt a legkönnyebben megoldani?
Én így oldottam meg, de szerintem ez így baromi teljesítmény zabáló (folyton változtatgatni a sprite helyzetét..)
Render() metódus [libgdx]: (A create() metódusban van megadva az alap pozíciója, ami 0,-5)
batch.begin();
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(280, -5);
grassSprite2.setPosition(280, -5);
grassSprite3.setPosition(280, -5);
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(570, -5);
grassSprite2.setPosition(570, -5);
grassSprite3.setPosition(570, -5);
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(0, -5);
grassSprite2.setPosition(0, -5);
grassSprite3.setPosition(0, -5);
batch.end();Azért van 3 grassSprite, mert három különböző "layer"-en vannak. Innen csórtam.
Szerk: ha széthúzom a sprite-okat 800px szélesre akkor sajna nagyon romlik a minőségük, ezért kell ez a "duplikálás" (mi erre a helyes magyar szó? )
Más (hunfatal) :
Úgy oldottam meg végül az ütközés utáni body törlést, hogy létre hoztam egy array-t (deleteBodies), oda hozzáadtam a contactlistenerben a body-t amit törölni kell (A fixture-ökből szedtem ki a getBody() fgv-el), majd a render metódus elején (tehát a contactlisteneren kívül) töröltem. Így nincs külön osztályban, de működik.
Mit gondol(tok)sz? jó lesz így?
kaud:
ContactListenerben:dropDeletionList.add(fixtureA.getBody());
A render metódus elején:
if(dropDeletionList.size > 0){
Iterator<Body> iter2 = dropDeletionList.iterator();
Iterator<Body> iter = raindrops.iterator();
while (iter2.hasNext()){
Body dropToDel = iter2.next();
while(iter.hasNext()){
Body drop = iter.next();
if(drop.equals(dropToDel)){
iter.remove();
world.destroyBody(dropToDel);
}
}
}
dropDeletionList.clear();
}A raindrops array iterátora azért kell, hogy ne csak a body-t törölje ki, hanem a hozzá tartozó textúrát is.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz szabi__memo #1089 üzenetére
Szia!
Hogy érted azt, hogy van-e rá lehetőség?Befizeted a $25-ös developer költséget a Google-nek és onnantól kezdve fel tudsz rakni akármit: fizetőset, micro fizetéseset, reklámosat.. (Persze előbb elbírálják az appod, de mostanában kb. mindent engednek )
https://heureka-kreativ.hu
-
trisztan94
őstag
Miért nem vált át a GameOver screen-re a game? (libgdx)
if(catched == 1){
setScreen(new GameOver(true));
}Nincs külön class-ekre bontva az app (nagyon egyszerű, nincs rá szükség), a MainGame.class így néz ki:
public class MainGame extends Game {
create metódus(),
render metódus(),
... stb
}A render metódusban amikor "elkapok egy vízcseppet", akkor a catched 1-el növekszik, de ez működik is, mert a fenti elágazásba egy log-ot is raktam, és szépen kiírja, hogy nyertél.
a setScreen(new GameOver(true)); átal átadott boolean érték azt mondja, hogy nyert-e a játékos, vagy veszített-e.
A GameOver class egy másik mappában van (Screen/GameOver.class) és az így néz ki:
public class GameOver implements Screen{
boolean win;
Texture bucketTexture;
Texture dropTexture;
SpriteBatch batch;
OrthographicCamera camera;
public GameOver(boolean win)
{
this.win = win;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
if(win == true){
batch.draw(bucketTexture, camera.viewportWidth / 2, camera.viewportHeight / 2);
}
else{
batch.draw(dropTexture, camera.viewportWidth / 2, camera.viewportHeight / 2);
}
batch.end();
}
//... satöbbiAmikor át kéne váltania a Screen-t, akkor semmi sem történik, csak egy másodpercre befagy a játék és folytatódik tovább
https://heureka-kreativ.hu
-
trisztan94
őstag
Sziasztok!
Egy érdekes jelenségre lettem figyelmes libgdx használata közben:
Van egy MenuScreen.java menüm, így néz ki:
[link] - pastebin, az egész classa fontos rész itt van, az ImageButton-re raktam egy input handler-t:
button.addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
MineFinder.Log.debug("xpos: " + x + ", ypos: " + y);
game.setScreen(new GameScreen(game));
}
});Ezzel semmi probléma sincs, átléptet a GameScreen.java-ra, ami maga a játék.
Na a gubanc ott jön, hogy ha be van import-olva a menuscreen, akkor a gamescreen-ben ott ahol a menuscreen-en a "START GAME" feliratú imagebutton volt ugyanúgy érzékeli a touchUp-ot. Nyilván ez nem jó, mert ha oda kattint a júzer, akkor reset-eli a játékot.
Ha nincs bent a menuscreen, kikommentezem, nem import-olom, stb, akkor viszont nem jön elő a jelenség.
Ötlet?
https://heureka-kreativ.hu
-
trisztan94
őstag
Hogyan tudok egy teljes textúrára inputListener-t kötni?
Ha vesztett a játékos, akkor kidob egy nagy Game Over textúrát, ami full screen. Szeretnék egy olyat berakni, hogy akárhova ha rányom a júzer, akkor újraindítsa a játékot, tehát az egész textúrára szeretném kötni. Lehet ilyent?
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz WonderCSabo #1142 üzenetére
"tap to restart" funkció, tehát, hogy akárhova nyom a képernyőn, azt nézze.
Végül megoldottam, nem a textúrára kellett az inputListener. Szimplán implementálni kellett az InputProcessor osztályt az osztályomban, kigenerálni a metódusokat (touchDown, mouseMoved, stb) és akkor az egész képernyőre megy a listener.Itt van ezzel kapcsolatban a SO kérdésem, amit meg is válaszoltam.
Más:
Exportálni akarom a játékot, mint apk. Kér valami Keystroke-ot. Az micsoda? Mire való?Illetve kér még több adatot, ha új keystroke-ot akarok csinálni, azok micsodák?
Alias - ez gondolom az app neve, nem?
Validity?Amikor kitöltöttem ezt az oldalt is, akkor viszont egy ilyen hibát dob:
"keytool error: java.io.IOException: Incorrect AVA format."Ez gondolom a kiválasztott keystroke formája lesz, mert nem volt kiterjesztés amikor mentettem a fájlt. MIlyen kiterjesztés kell neki?
https://heureka-kreativ.hu
-
trisztan94
őstag
Sziasztok!
Mennyire bonyolult egy "hangfelismerőt" implementálni alkalmazásban? Valami olyasmi kellene, hogy ha tapsol a felhasználó, akkor bekapcsol a vaku, stb.
https://heureka-kreativ.hu
-
trisztan94
őstag
válasz SektorFlop #1190 üzenetére
A Safe mode lényege az (is), hogy ne indulhasson el third-party alkalmazás, így nemigen hiszem, hogy megvalósítható.
https://heureka-kreativ.hu
-
trisztan94
őstag
A Super Amoled (Plus) kijelző teszi, ami a Samsung védjegye már a Galaxy S óta.
Magas kontraszt, élénk színek jellemzik.
Cyanogenmod-on Nexus 3-mon én tudtam állítani a kontrasztot, meg ezeket, de az is Amoled-es, szóval lehet, hogy csak annak lehet.
https://heureka-kreativ.hu
-
trisztan94
őstag
Szerintem valamit nagyon elnéztél, vagy nem arra gondolsz amit írsz.
Itt egy összehasonlító videó. Super Amoled Wikipedia.
Az amoled kijelzők fő lényege a fentebb leírt élénkség és kontraszt + jó betekintési szögek. Nem driver függő.
https://heureka-kreativ.hu
-
trisztan94
őstag
Szerintem ez is az Amoled saját cucca, bár lehet, hogy most hülyeséget írok.
Fentebb is írtam, de próbálj meg felrakni egy CyanogenMod-ot, nekem Galaxy Nexus-on az volt és ott tényleg lehetett állítani ezeket, de az is Amoled kijelzős volt.
Más kijelzős mobilon még nem láttam iylet, de nem is nyomkodtam sok mást
https://heureka-kreativ.hu
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen