• Anmelden

1

Sonntag, 23. Dezember 2012, 23:53

Bitmap movement funktion

Servus..

ich brauche für mein Spielmenü ein kleines Script das folgendes macht:
+ Bewegen von einer Bitmap von ihrer aktuellen position zu Position XY, innerhalb einer frei setzbaren zeit
+ skalieren der bitmap von ihrem aktuellen faktor zum neuen

ein Wunschkommando von mir wäre:

Ruby Quellcode

1
Bitmap.moveit(goalX, goalY, newfactor, frames)


Ich hoffe einer unserer tallentierten Scripter hat Zeit mir sowas zu schreiben :)
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

2

Montag, 24. Dezember 2012, 00:20

Steh ich gerade auf der Leitung oder meinst du nicht eher Sprite? Eine Bitmap hat weder Position noch Skalierung. Ich gehe mal davon aus dass du das wolltest...? Wenn ja, setzt ich mich mal ran.
Terranigma 2 - Episode I - Open Beta out now!

RPC - Rpg-Maker Community Platform - Spielübergreifende Erfolge und mehr!

3

Montag, 24. Dezember 2012, 00:25

ah.. stimmt ja ^^"

ja genau.. ne sprite
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

4

Montag, 24. Dezember 2012, 00:52

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Sprite
 
  alias init_later initialize
  def initialize(viewport=nil)
    @count = 0
    @frames = 0
    init_later(viewport)
  end
 
  # x , y , zoom, duration
  def moveto(new_x,new_y,new_zoom,frames)
    @new_x = new_x.to_f
    @new_y = new_y.to_f
    @old_x = self.x
    @old_y = self.y
    @new_zoom = new_zoom
    @old_zoom = self.zoom_x
    @count = 0
    @frames = frames.to_f
  end
 
  alias update_later update
  def update
    if @count < @frames
      factor = @count/@frames
      self.x = @old_x+(@new_x-@old_x)*factor
      self.y = @old_y+(@new_y-@old_y)*factor
      self.zoom_x = @old_zoom+(@new_zoom-@old_zoom)*factor
      self.zoom_y = @old_zoom+(@new_zoom-@old_zoom)*factor
      @count+=1
    end
    update_later
  end
 
end


So ungefähr? Per @sprite.moveto(x,y,zoom,frames) rufst du es auf. Du musst aber für jedes Sprite, dass du auf diese Weise bewegen willst regelmäßig .update-Aufrufen, da gibt es aber keinen eleganten Weg drum rum, soweit ich weiß, sofern das Spiel/Menü während der Bewegung nicht "einfrieren" darf. Und ich war mir nicht sicher, weil zoom_x und zoom_y ja getrennt sind, aber ich geh mal davon aus dass du beide gleich verändern willst?
Terranigma 2 - Episode I - Open Beta out now!

RPC - Rpg-Maker Community Platform - Spielübergreifende Erfolge und mehr!

5

Montag, 24. Dezember 2012, 00:56

supi
werds morgen früh ma testen ^^
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Kagurame

Alopex Lagopus

Motto: Ich Böse, Du Teufel

  • Nachricht senden

6

Montag, 24. Dezember 2012, 01:49

Regelmäßiges Update umgehen?

Es wäre möglich. Zwei Wege fallen mir da spontan ein.

1: Ein alias zu Graphics.update, sofern Modul-Funktionen geupdatet werden können. Diese updatet zusätzlich einen Array mit den betroffenen Sprites. Bei der Move würde ein Sprite sich selbst in den Array schreiben, die Update des jeweiligen Sprites wieder entfernen wenn nötig. So hat man nur den Move und muss sich um nichts weiter kümmern.

2: Eine Basis-Klasse zur Scene, welche das macht. Erfordert allerdings für alle Betroffenen Klassen die Vererbung sowie nen alias für die Update, wo ein super rein müsste.
Bild

  • Hallo

    Tabs klicken unso, ne?
  • Lyric

    Meine schwarze Liste, beginnt mit einem Satz:
    "Wer zuletzt lacht, lacht am besten!", und am Ende ist noch Platz.
    Auf der Liste meiner Feinde, ist auch für euch noch Platz
    Wer zuletzt lacht, lacht am besten!
    Merkt euch diesen Satz!

    Ode an die Feindschaft von Saltatio Mortis

  • Outtakes

    • Nummer 3
      20.09.2012 - 19:46
      "Yah, ich bin ihre Motivazin." "Motivazin - gibts das jetzt in der Apotheke rezeptflichtig?"
    • Ich mag Kekse
    • Nummer 2
      08.09.2012 - 01:29 Uhr
      "Die Erlebnismacher zu Hannovre - Exlibre - ääääh... Excalibur"

      *Lachflash*
    • Nummer 1
      07.09.2012 - 22:58 Uhr
      *Bööarps* - Die Erlebnismacher zu Hannovre - Excalibur... "Mahlzeit... also... doch nicht Mahlzeit... war nur die Website"
      "Ich hab gerülpst -.-" "Du hast was?" *LACHFLASH*
      "Nicht dein Ernst, oder?" "DOCH!" *LACHFLASH second tour*
  • Profile

    Bild
  • Ich

    Dass bin ich:

    Maker: RPG-XP, RPG-VX
    Story:
    Für andere mehr als für mich: 60%

    Grafik:
    Ich werde besser: 35%

    Pixeln:
    Ich stehe an den Anfängen: 7%

    Mapping:
    Es fehlen nur noch (alle) Feinheiten: 67%

    Scripting:
    Informatiker, mittlerweile auch andere Sachen am skripten: 93%
  • Neues aus der SB

    Neues aus der SB:

    Spoiler: Die Camper
    (03:41:36) Kagurame: n8 du
    (03:41:37) Irrlicht: Nacht Mozilla
    (03:41:47) MozillaBabybird: Kagu: der witz war flach
    (03:42:01) Kagurame: welcher witz?
    (03:42:14) Heatra: geh nicht benji
    (03:42:21) Heatra: spiel lieber ats2 :D
    (03:42:25) MozillaBabybird: nacht leute ^^ ijemand sollte diesen verlauf im studio bash posten, damit die mal wissen wer die echten camper hier sind :D
    (03:42:35) Kagurame: ich bin scripten
    (03:42:38) MozillaBabybird: Heat: tut mir sorry xD
    (03:42:40) Kagurame: ich mach das...^^
    (03:42:48) MozillaBabybird: bis .... mittag ?
    (03:42:49) Heatra: ^^
    (03:42:55) MozillaBabybird: ja mittag dürfte passen
    (03:42:56) MozillaBabybird: :D
    (03:42:57) Kagurame: ^^
    (03:43:02) Heatra: ich steh morgen eh erst um 5 uhr mittags auf
    (03:43:07) Kagurame: bis heute
    (03:43:11) Steve: MozillaBabybird verlässt den Chat.
    (03:43:15) Kagurame: ich so um 3
    zum Lesen den Text mit der Maus markieren


    Spoiler: Die Informatiker vom Dienst
    (03:05:32) Ankou: bist du dir SICHER, dass es die Performance an der Stelle kritisch ist und c.a. 30% sind KEIN großer Unterschied?
    (03:05:41) Ankou: oh
    (03:05:45) Ankou: okay
    (03:06:21) Asandril: Oh Ha was habt Ihr gerade für ein Thema?
    (03:06:41) Ankou: das ist in der Tat eine performancekritische angelegenheit, aber ich denke dennoch nicht, dass das die Dinge sind auf die du dein Hauptaugenmerk richten solltest.
    (03:07:01) Heatra: maschine
    (03:07:01) Ankou: derartige Mikrooptimierungen werden Performanceprobleme sogut wie niemals beseitigen können
    (03:07:01) Irrlicht: anhand der Tatsache dass es 20 000 000 Durchläufe waren nicht wirklich :-/
    (03:07:08) Ankou: änder was konzeptionelles oder lass es bleiben.
    (03:07:31) Ankou: evtl. kannst du mehr der Interpretation nach vorne verlagern
    (03:08:06) Ankou: aber solche Dinge zu versuchen wie die case Abfragen durch send zu ersetzen in der Hoffnung ein paar Prozent einzusparen bringens dir nicht
    (03:08:26) Asandril: Bin ich gerade hier in einem Kurs gelandet ..
    (03:08:36) Irrlicht: hatte mal in Erwägung gezogen die Befehle evtl. schonmal etwas "vorzuinterpretieren", aber das dürfte dann mehr Speicher verbrauchen als es Geschwindigkeit bringt...
    (03:09:11) Ankou: Asandril: ja, erstaunlich, angetrunken an Silvester über so etwas zu reden
    (03:09:28) Heatra: -> lampenfieber
    (03:09:40) Asandril: Kann ich nur beipflichten.
    (03:09:46) Irrlicht: atm bin ich mir nicht sicher was genau den doch vergleichsweise erheblichen Lag von Parallel-Process-Events verursacht (oder ob es einfach an der gesammten Masse liegt) wenn ich bei 2 000 000 solcher Durchläufe unter einer Sek. bleibe...
    (03:09:57) Ankou: Irrlicht: das ist durchaus üblich. Speicher gegen Geschwindigkeit einzustauschen ist sehr populär und bringt oft viel
    (03:11:23) Irrlicht: mal schaun :)
    zum Lesen den Text mit der Maus markieren


    Spoiler: Auch noch später^^
    (03:32:35) (Kagurame_AnkündigungImForumMach): es da ne methode wie beim xp?
    (03:32:48) Irrlicht: Cache.system("Iconset")
    bekommst das Iconset
    (03:32:50) (Kagurame_AnkündigungImForumMach): brauche es dringend, aber nix gefunden bisher
    (03:33:01) (Kagurame_AnkündigungImForumMach): und dann per id?
    (03:33:06) (Kagurame_AnkündigungImForumMach): drauf zugreifen?
    (03:33:07) Irrlicht: Index berechnet sich einfach aus
    x = index % 16
    y = index / 16
    (03:33:17) Irrlicht: afaik warens 16 nebeneinander^^
    (03:33:28) (Kagurame_AnkündigungImForumMach): ok, danke.
    (03:33:51) (Kagurame_AnkündigungImForumMach): ich glaub ich scripte dann noch ein bissl
    (03:34:01) Steve: (Kagurame_AnkündigungImForumMach​) heißt jetzt Kagurame.
    (03:34:04) Irrlicht: im XP hast die einzelnen Icons anhand des Namens aus dem Icon-Ordner aufgerufen
    (03:34:09) Steve: Kagurame ist nun Scripten!
    (03:34:17) Irrlicht: (geht natürlich im VX auch, aber wozu gibts das Iconset)
    (03:34:23) Kagurame: ja ich weis, daher war ich heut mittag verwirrt
    zum Lesen den Text mit der Maus markieren

7

Montag, 24. Dezember 2012, 02:44

@Kagurame:

Jep, die Ideen hätte ich auch gesagt, sind aber wie ich meine weniger elegant und sofern das nicht auf ner per-Frame Basis verwendet wird eher unnötig. Aber wenn Chaosgod es sinnvoll hält, kann ich es auch umsetzen, kein Ding.
Terranigma 2 - Episode I - Open Beta out now!

RPC - Rpg-Maker Community Platform - Spielübergreifende Erfolge und mehr!

8

Montag, 24. Dezember 2012, 10:38

des passt so :)
hab ne eigene update methode im menü, da funzt das super
danke King :)
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Ähnliche Themen

Social Bookmarks