Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
524 connectés actuellement
30732809 visiteurs depuis l'ouverture
2788 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Messages postés par forêtnor Nombre de messages référencés sur Oniromancie (non supprimés): 1128 Aller à la page: 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
Posté dans Forum - Projets, maps et screenshots |
forêtnor -
posté le 01/07/2009 à 19:49:46. (4552 messages postés) |
|
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
| # Définition de l'abscisse du sprite
if $game_map.width*32 > 640
if ($game_player.real_x / 4 + 16) < 320
self.x = ($game_player.real_x / 4 + 16)
else
if ($game_player.real_x / 4 + 16) < ($game_map.width*32 - 320)
self.x = 320
else
self.x = ($game_player.real_x / 4 + 16) - ($game_map.width - 20)*32
end
end
else
self.x = ($game_player.real_x / 4 + 16)
end
# Définition de l'ordonnée du sprite
if $game_map.height*32 > 480
if ($game_player.real_y / 4 + 16 ) < 240
self.y = ($game_player.real_y / 4 + 25)
else
if ($game_player.real_y / 4 + 16) < ($game_map.height*32 - 240 )
self.y = 249
else
self.y = ($game_player.real_y / 4 +25) - ($game_map.height - 15)*32
end
end
else
self.y = ($game_player.real_y / 4 + 25)
end
|
It is marching ! (pour toutes les tailles de map)
Je vais voir ça pour les event ^^
Dis moi si tu as besoin d'autre chose ou de nouvelles fonctions
Edit : Ah cool du coup l'ombre fixe marche aussi
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| class Ombre_f < Sprite
def initialize (viewport)
super(viewport)
self.bitmap = RPG::Cache.picture("ombre F")
$PI=Math.atan((1.0)*(4.0))
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
update
end
def update
super
# Définition de l'abscisse du sprite
if $game_map.width*32 > 640
if ($game_player.real_x / 4 + 16) < 320
self.x = ($game_player.real_x / 4 + 16)
else
if ($game_player.real_x / 4 + 16) < ($game_map.width*32 - 320)
self.x = 320
else
self.x = ($game_player.real_x / 4 + 16) - ($game_map.width - 20)*32
end
end
else
self.x = ($game_player.real_x / 4 + 16)
end
# Définition de l'ordonnée du sprite
if $game_map.height*32 > 480
if ($game_player.real_y / 4 + 16 ) < 240
self.y = ($game_player.real_y / 4 + 25)
else
if ($game_player.real_y / 4 + 16) < ($game_map.height*32 - 240 )
self.y = 249
else
self.y = ($game_player.real_y / 4 +25) - ($game_map.height - 15)*32
end
end
else
self.y = ($game_player.real_y / 4 + 25)
end
self.opacity = 75
end
end |
Perso je préfère largement avec l'ombre fixe en plus.
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - Projets, maps et screenshots |
forêtnor -
posté le 01/07/2009 à 18:54:34. (4552 messages postés) |
| Si tu veux donner un aspect délabré c'est réussi ^^
Bon dernière tentative je te recopie le tout corrigé et fonctionnel :
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
| #======================================================================
# Lumières dynamiques
#-----------------------------------------------------------------------------------------------------------------------------
# Par Forêtnor (Oniromancie)
#=====================================================================
class Light
attr_accessor :id
attr_accessor :angle
attr_accessor :opacity
attr_accessor :zoom
def initialize (id, angle, opacity, zoom)
@id = id
@angle = angle
@opacity = opacity
@zoom = zoom
$ombre1 = Ombre.new ($viewport1, 1)
end
def update
if $ombre1 != nil and $light1 !=nil
$ombre1.update
end
end
end |
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| #======================================================================
# Ombres Dynamiques
#------------------------------------------------------------------------------------------------------------------------------
# Par Forêtnor (Oniromancie)
#======================================================================
class Ombre < Sprite
attr_reader :id
def initialize(viewport, id)
super(viewport)
$PI=Math.atan((1.0)*(4.0))
@id = id
update
end
def update
super
self.bitmap = RPG::Cache.picture("ombre")
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
# Définition de l'abscisse du sprite
if $game_map.width*32 > 640
if ($game_player.real_x / 4 + 16) < 320
self.x = ($game_player.real_x / 4 + 16)
else
if ($game_player.real_x / 4 + 16) < ($game_map.width*32 - 320)
self.x = 320
else
self.x = ($game_player.real_x / 4 + 16) - 320
end
end
else
self.x = ($game_player.real_x / 4 + 16)
end
# Définition de l'ordonnée du sprite
if $game_map.height*32 > 480
if ($game_player.real_y / 4 + 16 ) < 240
self.y = ($game_player.real_y / 4 + 25)
else
if ($game_player.real_y / 4 + 16) < ($game_map.height*32 - 240 )
self.y = 249
else
self.y = ($game_player.real_y / 4 +25) - 480
end
end
else
self.y = ($game_player.real_y / 4 + 25)
end
# Définition de l'opacité, l'angle et l'allongement.
if $light1 !=nil
self.angle = $light1.angle
self.opacity = $light1.opacity
self.zoom_x = $light1.zoom
end
end # fin methode update
def dispose
super
if @id == 1 and $ombre1 != nil
$ombre1 = nil
end
end
end #fin |
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
#==============================================================================
# ■ Spriteset_Map
#------------------------------------------------------------------------------
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
# ビューポートを作成
$viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 200
@viewport3.z = 5000
# タイルマップを作成
@tilemap = Tilemap.new($viewport1)
@tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names[i]
@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.data
@tilemap.priorities = $game_map.priorities
# パノラマプレーンを作成
@panorama = Plane.new($viewport1)
@panorama.z = -1000
# フォグプレーンを作成
@fog = Plane.new($viewport1)
@fog.z = 3000
# キャラクタースプライトを作成
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new($viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
@character_sprites.push(Sprite_Character.new($viewport1, $game_player))
# 天候を作成
@weather = RPG::Weather.new($viewport1)
# ピクチャを作成
@picture_sprites = []
for i in 1..50
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures[i]))
end
# タイマースプライトを作成
@timer_sprite = Sprite_Timer.new
$light1 = Light.new(1, 1, 1, 1)
# フレーム更新
update
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
# タイルマップを解放
@tilemap.tileset.dispose
for i in 0..6
@tilemap.autotiles[i].dispose
end
@tilemap.dispose
# パノラマプレーンを解放
@panorama.dispose
# フォグプレーンを解放
@fog.dispose
# キャラクタースプライトを解放
for sprite in @character_sprites
sprite.dispose
end
# 天候を解放
@weather.dispose
# ピクチャを解放
for sprite in @picture_sprites
sprite.dispose
end
# タイマースプライトを解放
@timer_sprite.dispose
# ビューポートを解放
$viewport1.dispose
@viewport2.dispose
@viewport3.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
if $light1 != nil
$light1.update
end
# パノラマが現在のものと異なる場合
if @panorama_name != $game_map.panorama_name or
@panorama_hue != $game_map.panorama_hue
@panorama_name = $game_map.panorama_name
@panorama_hue = $game_map.panorama_hue
if @panorama.bitmap != nil
@panorama.bitmap.dispose
@panorama.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
end
Graphics.frame_reset
end
# フォグが現在のものと異なる場合
if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
@fog_name = $game_map.fog_name
@fog_hue = $game_map.fog_hue
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
end
Graphics.frame_reset
end
# タイルマップを更新
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
# パノラマプレーンを更新
@panorama.ox = $game_map.display_x / 8
@panorama.oy = $game_map.display_y / 8
# フォグプレーンを更新
@fog.zoom_x = $game_map.fog_zoom / 100.0
@fog.zoom_y = $game_map.fog_zoom / 100.0
@fog.opacity = $game_map.fog_opacity
@fog.blend_type = $game_map.fog_blend_type
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog.tone = $game_map.fog_tone
# キャラクタースプライトを更新
for sprite in @character_sprites
sprite.update
end
# 天候グラフィックを更新
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.ox = $game_map.display_x / 4
@weather.oy = $game_map.display_y / 4
@weather.update
# ピクチャを更新
for sprite in @picture_sprites
sprite.update
end
# タイマースプライトを更新
@timer_sprite.update
# 画面の色調とシェイク位置を設定
$viewport1.tone = $game_screen.tone
$viewport1.ox = $game_screen.shake
# 画面のフラッシュ色を設定
@viewport3.color = $game_screen.flash_color
# ビューポートを更新
$viewport1.update
@viewport3.update
end
end |
Event en processus parallèle :
1
2
3
4
5
| if $light1 != nil and $ombre1 != nil
$light1.angle = 150
$light1.opacity = 100
$light1.zoom = 0.7
end |
Image : http://img514.imageshack.us/img514/5366/ombre2.png Que tu appelles "ombre" dans le dossier picture.
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - Projets, maps et screenshots |
forêtnor -
posté le 01/07/2009 à 15:54:41. (4552 messages postés) |
| Déjà dans light
Tu ajoutes
et tu changes
1
2
3
4
5
| def initialize (id, angle, opacity)
@id = id
@angle = angle
@opacity = opacity |
par
1
2
3
4
5
6
| def initialize (id, angle, opacity, zoom)
@id = id
@angle = angle
@opacity = opacity
@zoom = zoom |
Ensuite dans ombre tu changes
1
2
3
| self.angle = $light1.angle
self.opacity = $light1.opacity
self.zoom_x = $light1.zoom |
par
1
2
3
4
5
| if $light1 != nil
self.angle = $light1.angle
self.opacity = $light1.opacity
self.zoom_x = $light1.zoom
end |
On v y arriver
J'espère que ça te gènes pas que je fasse ça un peu à l'arrache mais pour une fois qu'on peut s'entraider entre maker
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - Projets, maps et screenshots |
forêtnor -
posté le 01/07/2009 à 13:01:40. (4552 messages postés) |
| Citation: deplus elle bug lorsque je m'approche de la map et se barre loin : |
En ben justement j'avais tout arrangé pour que ça ne le fasse pas
Sinon oui il manque des end et l'image. J'edit avec tout ça.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| # ID = any
#
self.bitmap = RPG::Cache.picture("ombre")
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
# Définition de l'abscisse du sprite
if $game_map.width*32 > 640
if ($game_player.real_x / 4 + 16) < 320
self.x = ($game_player.real_x / 4 + 16)
else
if ($game_player.real_x / 4 + 16) < ($game_map.width*32 - 320)
self.x = 320
else
self.x = ($game_player.real_x / 4 + 16) - 160
end
end
else
self.x = ($game_player.real_x / 4 + 16)
end
# Définition de l'ordonnée du sprite
if $game_map.height*32 > 480
if ($game_player.real_y / 4 + 16 ) < 240
self.y = ($game_player.real_y / 4 + 32)
else
if ($game_player.real_y / 4 + 16) < ($game_map.height*32 - 240 )
self.y = 256
else
self.y = ($game_player.real_y / 4 +32) - 480
end
end
else
self.y = ($game_player.real_y / 4 + 32)
end
# Définition de l'opacité, l'angle et l'allongement.
self.angle = $light1.angle
self.opacity = $light1.opacity
self.zoom_x = $light1.zoom
end # fin methode update
# -------------------------------------------------------------------------------------------------------------------------------
# ● Dispose
# -------------------------------------------------------------------------------------------------------------------------------
def dispose
super
if @id == 1 and $ombre1 != nil
$ombre1 = nil
end
end
end #fin
|
http://img514.imageshack.us/img514/5366/ombre2.png Pour l'image : Il faut l'appeler "ombre".
Dans l'event tu dois rajouter une ligne
$light1.zoom = ce que tu veux
L'angle est entre 0 et 360
L'opacité entre 0 et 255
Le zoom entre 0 et l'infinie. (1 ou 100 pour taille normale je crois).
Edit : c'est vraiment bizare que le script ombre fixe ne marche pas je viens de le retester sur plusieurs map et il fonctionne correctement (après pour le "déplacer écran" c'est normal).
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - Projets, maps et screenshots |
forêtnor -
posté le 01/07/2009 à 00:53:33. (4552 messages postés) |
| Bon déjà pour l'ombre fixe en dessous du perso tu as ça.
(C'est pas l'ombre portée c'est juste l'ombre sous les pieds du perso).
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
36
37
38
39
40
41
42
43
44
45
46
47
48
| class Ombre_f < Sprite
def initialize (viewport)
super(viewport)
self.bitmap = RPG::Cache.picture("ombre F")
$PI=Math.atan((1.0)*(4.0))
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
update
end
def update
super
if $game_map.width*32 > 640
if ($game_player.real_x / 4 + 16) < 320
self.x = ($game_player.real_x / 4 + 16)
else
if ($game_player.real_x / 4 + 16) < ($game_map.width*32 - 320)
self.x = 320
else
self.x = ($game_player.real_x / 4 + 16) - 160
end
end
else
self.x = ($game_player.real_x / 4 + 16)
end
if $game_map.height*32 > 480
if ($game_player.real_y / 4 + 16 ) < 240
self.y = ($game_player.real_y / 4 + 25)
else
if ($game_player.real_y / 4 + 16) < ($game_map.height*32 - 240 )
self.y = 250
else
self.y = ($game_player.real_y / 4 +25) - 480
end
end
else
self.y = ($game_player.real_y / 4 + 25)
end
self.opacity = 75
end
end
|
+ Dans Spriteset_Map
1
| @ombre_f = Ombre_f.new($viewport1) |
Dans initialize
Tu mets cette image dans le dossier pictures de ton projet et tu l'appelles "ombre F".
Oui c'est du bidouillage dégueulasse mais au moins ça marche même si la map est plus grande que l'écran
Ah oui autre chose : je te conseil d'utiliser le script de mouvement pixel par pixel de zeus sinon ça fait saccadé et un peu laid.
Dans update.
____________________________________ EDIT
Voilà le reste
D'abord tu as ça
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
36
37
38
39
40
41
42
43
| =======================================================================
#
# ■ Lumières dynamiques
# -------------------------------------------------------------------------------------------------------------------------------
# Par Forêtnor (Oniromancie)
# =======================================================================
class Light
attr_accessor :id
attr_accessor :angle
attr_accessor :opacity
-------------------------------------------------------------------------------------------------------------------------------
#
# ● Initialize
# -------------------------------------------------------------------------------------------------------------------------------
def initialize (id, angle, opacity)
@id = id
@angle = angle
@opacity = opacity
if @id == 1
$ombre1 = Ombre.new ($viewport1, 1)
end
end
-------------------------------------------------------------------------------------------------------------------------------
#
# ● Update
# -------------------------------------------------------------------------------------------------------------------------------
def update
if @id == 1
if $ombre1 != nil and $light1 !=nil
$ombre1.update
else
$ombre1.dispose
end
end
end
end |
Puis ça
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| =======================================================================
#
# ■ Ombres Dynamiques
# -------------------------------------------------------------------------------------------------------------------------------
# Par Forêtnor (Oniromancie)
# =======================================================================
class Ombre < Sprite
attr_reader :id
-------------------------------------------------------------------------------------------------------------------------------
#
# ● Initialize
# -------------------------------------------------------------------------------------------------------------------------------
def initialize(viewport, id)
super(viewport)
$PI=Math.atan((1.0)*(4.0))
@id = id
update
end
-------------------------------------------------------------------------------------------------------------------------------
#
# ● Update
# -------------------------------------------------------------------------------------------------------------------------------
def update
super
#
# ID = any
#
self.bitmap = RPG::Cache.picture("ombre")
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
# Définition de l'abscisse du sprite
if $game_map.width*32 > 640
if ($game_player.real_x / 4 + 16) < 320
self.x = ($game_player.real_x / 4 + 16)
else
if ($game_player.real_x / 4 + 16) < ($game_map.width*32 - 320)
self.x = 320
else
self.x = ($game_player.real_x / 4 + 16) - 160
end
end
else
self.x = ($game_player.real_x / 4 + 16)
end
# Définition de l'ordonnée du sprite
if $game_map.height*32 > 480
if ($game_player.real_y / 4 + 16 ) < 240
self.y = ($game_player.real_y / 4 + 32)
else
if ($game_player.real_y / 4 + 16) < ($game_map.height*32 - 240 )
self.y = 256
else
self.y = ($game_player.real_y / 4 +32) - 480
end
end
else
self.y = ($game_player.real_y / 4 + 32)
end
self.angle = $light1.angle
self.opacity = $light1.opacity |
Et toujours dans spriteset_map
Dans l'init :
1
| $light1 = Light.new(1, 1, 1) |
Dans l'update :
1
2
3
| if $light1 != nil
$light1.update
end |
Et pour gérer ton soleil sur chaque map tu fais un event en process parallèle :
1
2
3
| <> script :
$light1.angle = ce que tu veux
$light1.opacity = ce que tu veux |
NB : J'ai enlever la majorité de mon script et j'ai changer pas mal de choses et tout ça directement dans la fenêtre de message d'oniro.
Le code n'est surement pas exempt de bug donc
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - Projets, maps et screenshots |
forêtnor -
posté le 30/06/2009 à 21:57:54. (4552 messages postés) |
| Si tu l'utilise en tant que soleil tu n'as pas besoin non plus de changer dynamiquement l'orientation. Vu qu'à un moment de la journée quelle que soit ta position ton ombre ira dans la même direction. En revanche, si tu me dis la manière dont tu gère la temps dans ton jeu je peux modifier certains paramètres en fonction de l'heure (allongement et direction).
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - Aëdemphia |
forêtnor -
posté le 29/06/2009 à 22:50:22. (4552 messages postés) |
| Citation: *tousse* Il y a une perspective dans RM, c'est une forme d'axonométrie. Est-ce qu'elle est moisie ? Ouais, un peu. Mais ça reste une perspective. On voit les plans verticaux de face et les plans horizontaux de haut, de sorte qu'un cube serait représenté par deux carrés l'un au dessus de l'autre. Ca devient le bordel dès qu'on veut représenter des trucs un peu ronds. *tousse* |
Le débat ! Le débat ! Le débat !
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - Aëdemphia |
forêtnor -
posté le 29/06/2009 à 12:55:54. (4552 messages postés) |
| Ben c'est pour faire choli. Déjà je trouve que l'architecture des intérieurs très très convaincante par rapport à d'habitude.
Parce que en général les intérieurs sous rm sont très rarement crédibles. (les murs de 2m d'épaisseur y sont pour beaucoup).
|
Une magie que la majorité des habitants de Ghrorlok. |
Posté dans Forum - [C++] Ocean's Keeper |
forêtnor -
posté le 28/06/2009 à 23:02:19. (4552 messages postés) |
| Laul le scenario dans les shoot them up on s'en tamponne un peu.
Au contraire la difficulté doit être assez élevé pour faire la distinction entre bons et mauvais joueurs mais ne doit pas monter trop vite sous peine de rendre le jeu impossible à quiconque, bons ou mauvais (et qui ne fait donc pas la distinction entre les deux ).
|
Une magie que la majorité des habitants de Ghrorlok. |
Aller à la page: 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
|
|
|