"Fortgeschrittene" Schussfunktion bei Schiffseite

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

AFRO

Betreff: "Fortgeschrittene" Schussfunktion bei Schiffseite

BeitragSo, Mai 27, 2007 10:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leutz!

Weil mir der neue Fluch der Karibik so gut gefallen hab hab ich mir gedacht setz dich doch mal an pc und prog mal wieder n bisschen und zwar ne Seeschlacht. Bis jetz is alles wie gehabt gelaufen... Galeone in Milkshape3d erstellt, Skybox, Meer, gegnerische Galeone, SCHIESSEN.

Beim Schiessen hab ich ein Problem. Bei einem Schiff wie z.B. einer Galeone wird nur mit der Seite geschossen (da sind ja auch die kanonen^^) bei mir dreht sich der schuss aber mit, sodass wenn ich das schiff um ca. 90 grad drehe auf einmal mein schiff mit dem Bug (Vorderseite) ballert??? Hab schon ziemlich viel ausprobiert, bin aber nicht weitergekommen. Ich poste mal den code:

For n = 0 To Player_1_Kanonen_1

k.Kugel = New Kugel
k\Mesh = CopyEntity (Kugel)
RotateEntity k\Mesh,EntityPitch(Camera),EntityYaw(Camera),EntityRoll(Camera)

If EntityX (Galeone) =< EntityX (Galeone2) Then

k\Richtung = 1
k\x = EntityX (Galeone)
k\y = EntityY (Galeone)
k\z = EntityZ (Galeone) + (n*10)
PositionEntity k\Mesh, k\x, k\y, k\z

ElseIf EntityX (Galeone) > EntityX (Galeone2) Then

k\Richtung = 2
k\x = EntityX (Galeone)
k\y = EntityY (Galeone)
k\z = EntityZ (Galeone) + (n*10)
PositionEntity k\Mesh, k\x, k\y, k\z

EndIf

Next

;--- blablabla---

For k.Kugel = Each kugel

If k\Richtung = 1 Then
MoveEntity K\Mesh, 0, 0,-5
ElseIf k\Richtung = 2 Then
MoveEntity K\Mesh, 0, 0, 5
EndIf
Next

Hoffentlich kann mir jemand von euch helfen!

~EDIT~

ist klar, dass das jetz nich die komplette schussfunktion ist, z.B. fehlt der Übersicht halber der Counter und das KeyHit (57) usw.
!!!BF HARDCORE KILLER!!!
!!!ACHTUNG KILLERSPIELZOCKER!!!

darth

BeitragSo, Mai 27, 2007 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
machs mit einem "generellen schussvektor"... den man dann um eine drehmatrize (zusammen mit dem schiff) drehen kann. also in etwa so:
Code: [AUSKLAPPEN]
;annahme normaler schuss wäre auf x-achse (sprich: schiff längsachse auf z)
vx#=1 ;oder -1, je nachdem ob links oder rechts
vy#=0
vz#=0

while not keyhit(1)
;ganzer krempel rein

if keydown(drehen) then
 turnentity schiff,0,1,0 ;das 1 hier muss dem unteren winkel entsprechen
 vx#=cos(1)*stärke#
 vy#=0
 vz#=sin(1)*stärke#
 ;der vektor ist normalisiert (also betrag 1)... multiplizieren mit stärke gibt ihm eine neue länge
endif

wend : end

natürlich muss dieser vektor auf die kugeln angewandt werden und kann nicht (obwohl doch) einfach so übernommen werden. also so:
Code: [AUSKLAPPEN]
for k.kugel=each kugel ;oder etwas in dieser art...
 k\x=k\x+vx
 k\y=k\y+vy ;was gleichbleibt... schwerkraft oder sowas rein :P
 k\z=k\z+vz
next


hoffe es hilft...
Diese Signatur ist leer.
 

AFRO

BeitragSo, Mai 27, 2007 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry wenn das jetz nooby klingt, aber des check ich ned ganz... kannste das mal in meinen code einsetzen, ich weiß nich genau wie du das meinst.

PS: THX für die schnelle antwort
!!!BF HARDCORE KILLER!!!
!!!ACHTUNG KILLERSPIELZOCKER!!!

darth

BeitragSo, Mai 27, 2007 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
tssss... :/
na schön:
Code: [AUSKLAPPEN]

For n = 0 To Player_1_Kanonen_1
 k.Kugel = New Kugel
  k\Mesh = CopyEntity (Kugel)
  ;rotate vergesse, kugel ist ja rund (hoffentlich :O)
  k\x=k\x+n*10 ;falls ich das richtig verstanden hab... naja, platzier sie einfach bei den kanonen
 PositionEntity k\Mesh, k\x, k\y, k\z
Next

;--- blablabla---

For k.Kugel = Each kugel
 TranslateEntity K\Mesh, cos(entityyaw(schiff)), 0,sin(entityyaw(schiff))
 ;k\x=k\x+cos() : k\z=k\z+sin()
Next

so... ich weiss noch nicht genau wie du die kugel platziert haben möchtest, aber das solltest du hinkriegen Razz
Diese Signatur ist leer.
 

AFRO

BeitragMo, Mai 28, 2007 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
THX
werd ich morgen mal ausprobiern (hab n ganzen tag zeit, dazu kommt soft-air-battle-club organisiern, clan admin helfen...) Schonmal THX bis zum Update von mir.

PS:
Zu dem Tssss.
Was soll ich machen wenn ichs ned check, soll ich einfach darauf belassen lassen, und einfach sagen dass ichs eingebaut hab?
!!!BF HARDCORE KILLER!!!
!!!ACHTUNG KILLERSPIELZOCKER!!!
 

Dreamora

BeitragMo, Mai 28, 2007 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö, versuchen zu verstehen was er macht und wie du es nutzen kannst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

AFRO

BeitragDi, Mai 29, 2007 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab versucht es zu verstehen, sonst hätte ich nicht sagen können dass ichs nicht kapier. Und ich habs immer noch nicht kapiert Very Happy aber das: rotate vergesse, kugel ist ja rund (hoffentlich :O) war n richtig guter tipp! ich hab die kugel in milkshape3d als Mesh erstellt und in BB3D reingeladen und siehe da, dank definierter x, y, z achse funktionierts mit rotate. DANKE FÜR DIE GUTE HILFE

~EDIT~

OMG... Ich bin dumm... Jetz hab ich n Problem mit den collisions bei dem ich nich weiterkomm... bei nem update sag ich mal ob ichs gschafft hab.
!!!BF HARDCORE KILLER!!!
!!!ACHTUNG KILLERSPIELZOCKER!!!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group