Spiel den Locher

Posted By: hopfel

Spiel den Locher - 06/30/09 16:33

Hat wer eine Idee wie man es anstellen könnte, ein Loch in eine Bitmap zu stampfen? Ein Pic eines schwarzen Kreises kann ich nicht darüberschieben, weil man dann nicht durch das Loch durchschauen könnte....
Posted By: nukemtheduke

Re: Spiel den Locher - 07/01/09 05:27

Mach es anders rum !
1 Bild mit Loch darüber 2 Bild ohne Loch beim Lochen einfach Bild 2 Ausblenden und du hast dein Loch wo du es brauchst

lg

ntd
Posted By: hopfel

Re: Spiel den Locher - 07/01/09 07:32

Aber was ist nun wenn ich bestimmen will wo das Loch ist? Und was wenn ich mehrere Löcher haben will? (Mit einer Shotgun ein paar löcher in die Wand schiessen)
Posted By: sebbi91

Re: Spiel den Locher - 07/01/09 10:24

Meines Wissens nach ist es nicht möglich Löcher in Modellse,Terrains oder Sprites zu machen!
Wenn du Löcher in die Wand machen willst gibt es viele möglichkeiten es zu simmulieren!

Die erste wäre ein Einschussloch als Sprite an die Wand zu schmeißen und diesem Sprite dann ein Normalmap zu zuweisen!
So macht das zum Beispiel F.E.A.R.
Es sieht so aus als hättest du ein Stück Wand weggeschossen!
http://www.donotcross.de/wordpress/bilder/fearcombat.jpg
Für normalmaps brauchst du allerdings mindestens 3d gamestudio A7 commercial.

Die zweite wäre eine Modelldeformation!
Schau dir dafür am besten mal das AUM 50 an (Terraindeformation)!

Die dritte Möglichkeit wäre sehr aufwendig und Performance fressend!
Hierbei legst du deine Sprites (oder Modelentitys)dicht nebeneinander,ähnlich wie ein Mauerwerk!

wenn du nun ein Sprite triffst dann löschst du es und es sieht so aus als würdest du Stücke raus schießen!
AUM 21 (zerbrechliches Glas)
AUM 33 (zerstörbare Wände)


Wie gesagt die letzte Methode ist aber sehr aufwendig!

Ich hoffe ich konnte dir helfen ^^

lg Sebastian


PS In dem Tread "GEO mod 2.0" diskutieren wir genau um dieses Thema !
Schau am besten mal rein ^^

http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=275178&page=1



Posted By: ventilator

Re: Spiel den Locher - 07/01/09 10:27

wieso malst du die löcher nicht einfach in den alphakanal?
Posted By: hopfel

Re: Spiel den Locher - 07/01/09 10:57

Ich rede aber von Panels und die Kolisionserkennung wie im AUM 84 ^^. Aber naja man müsste die Bitmap während des Spiels verändern können um das zu erreichen was ich will^^ Aber das geht meines Wissens nicht also hab ich mir ne kleine Notlösung zusammengebastelt... Aber ich hab ein nächstes Problem und schreib ihn am besten gleichmal in diesen Thread:

Was ist der Unterschied zwischen dem:

function test()
{
var testx=0;
var testy=0;

PANEL* test_pan =
{
pos_x=0;
pos_y=0;
window(0,0,25,20,"test.bmp",testx,testy);
flags=OVERLAY | VISIBLE;
layer=5;
}

.
.
.



und dem:

var testx=0;
var testy=0;

function test()
{

PANEL* test_pan =
{
pos_x=0;
pos_y=0;
window(0,0,25,20,"test.bmp",testx,testy);
flags=OVERLAY | VISIBLE;
layer=5;
}

.
.
.


Antwort: beim ersten funktioniert der window-befehl nicht, beim zweiten schon. Ich muss den Code aber so schreiben, dass diese zwei variablen nur für jene Funktion gilt.
Posted By: ventilator

Re: Spiel den Locher - 07/01/09 10:58

sicher kann die bitmap während des spiels verändert werden.

in panels kannst du nur globale variablen verwenden. du musst dir einen workaround überlegen. z.b. mit einem globalen array.
Posted By: hopfel

Re: Spiel den Locher - 07/01/09 11:04

Ok wieder was gelernt^^ merci
Posted By: hopfel

Re: Spiel den Locher - 07/01/09 11:56

Ok funzt doch nicht... -_-

folgendes funktioniert:

PANEL* test_pan = pan_create("pos_x=320;pos_y=240;window(0,0,25,20,worm_bmp,testx[5],testy[5]); flags=OVERLAY | VISIBLE; ",5);


folgendes funktioniert nicht:
spielnum=5;

PANEL* test_pan = pan_create("pos_x=320;pos_y=240;window(0,0,25,20,worm_bmp,testx[spielnum],testy[spielnum]); flags=OVERLAY | VISIBLE; ",5);
Posted By: ventilator

Re: Spiel den Locher - 07/01/09 11:59

versuchs mal so:

var *testx;
var *testy;

function test()
{

testx = &arrayx[spielnum];
testy = &arrayy[spielnum];

PANEL* test_pan = pan_create("pos_x=320;pos_y=240;window(0,0,25,20,worm_bmp,testx,testy); flags=OVERLAY | VISIBLE; ",5);


Posted By: hopfel

Re: Spiel den Locher - 07/01/09 12:07

'arrayx' uncleared identiver heisst es

Posted By: ventilator

Re: Spiel den Locher - 07/01/09 12:20

var arrayx[1000];
var arrayy[1000];

var *testx;
var *testy;

function test()
{

testx = &arrayx[spielnum];
testy = &arrayy[spielnum];

PANEL* test_pan = pan_create("pos_x=320;pos_y=240;window(0,0,25,20,worm_bmp,testx,testy); flags=OVERLAY | VISIBLE; ",5);
Posted By: hopfel

Re: Spiel den Locher - 07/01/09 12:34

crach in test

frown
Posted By: ventilator

Re: Spiel den Locher - 07/01/09 12:55

das funktioniert sicher. ich hab das selbst schon oft so gemacht. der fehler muss woanders liegen.
Posted By: hopfel

Re: Spiel den Locher - 07/01/09 13:03

Ich nehms mal an... naja dann muss mal wieder eine meiner berühmten Notlösungen her... ^^
Posted By: hopfel

Re: Spiel den Locher - 07/31/09 20:29

Tut mir leid, dass ich das alte Thema nochmal aufgraben muss, aber bei meinem neuen Projekt muss ich das genau selbe machen (Laufanimation eines Panels) doch nun gibt es keine Notlösungen mehr -_- Ventliators Lösung verursachte zwar diesmal keinen Crash, aber es bewegten sich immer noch alle besagten Panels gleich. hier erstmal mein Code:

var geglive[40];
var geanx[40];
var geany[40];
var gegnerzahl=0;

function gegner_fu(var pox, var poy)
{
var number;

number=gegnerzahl;

PANEL* gegner = pan_create("pos_x=0;pos_y=0;flags=OVERLAY | VISIBLE;window(0,0,25,32,gegner_bmp,geanx[number],geany[number])",6);

gegner.pos_x=stage_a.pos_x+pox;

gegner.pos_y=stage_a.pos_y+poy;

geglive[number]=100;

gegnerzahl+=1;

while(geglive[number]>=0)
{

...

wait(1);
}

Setze ich gegnerzahl auf 1 oder mehr, bewegt sich gar nichts mehr...

Ich begreife wirklich nicht wieso das nicht funktionieren kann...
© 2023 lite-C Forums