Ce sujet a été résolu
J'allais conseiller ça
Trop fort
Bientôt je dépasse le maître
Bientôt je dépasse le maître
il y a un an
Trop fort
Bientôt je dépasse le maître
Bientôt je dépasse le maître
ouais bon j'ai pas beaucoup d'expérience malheureusement
Je vous aime les kheys, prenez soins de vous
il y a un an
Les vrais font des Flappy Bird sur Visual Studio avec des images dans des picturebox pour sprites (non, c'est juste moi ça ?)
il y a un an
0-0
1 an
Merci keyou
Merci ALLAH pour ce Miracle : 
https://www.youtube.com/watch?v=YS0MJmUw3Tc

il y a un an
@VisualStudio @Millefi-Hime
Je fais appel à vous par-ce que je coince sur un comportement bizarre (je m'arrache les cheveux à essayer de le corriger en vain), sur le fonctionnement de base d'un Raycast (qui est sensé être plutôt simple
)
Grosso-modo j'ai fais des mobs sur la carte pour déclencher les combats, puis j'ai voulu les empêcher de voir derrière un mur avec le-dît Raycast2D, sauf que celui-ci
1. Semble détecter les tiles qui ne sont pas des murs
2. Même en enlevant le collision layer de la tilemap pour test, il préfère ne rien détecter que détecter le perso
3. Ne détecte que quand je suis en bas à droite
J'ai vérifié que le raycast est bien cadré entre le mob et le perso, ce qui est le cas (carrés violets) :
J'ai essayé avec la version pure (
https://docs.godotengine.[...]/physics/ray-casting.html) mais même chose
Bref j'arrive pas à comprendre le soucis là
EDIT : j'ai un début de piste, le collision point est en haut à gauche (ça explique pas grand chose mébon)
Je fais appel à vous par-ce que je coince sur un comportement bizarre (je m'arrache les cheveux à essayer de le corriger en vain), sur le fonctionnement de base d'un Raycast (qui est sensé être plutôt simple
Grosso-modo j'ai fais des mobs sur la carte pour déclencher les combats, puis j'ai voulu les empêcher de voir derrière un mur avec le-dît Raycast2D, sauf que celui-ci
1. Semble détecter les tiles qui ne sont pas des murs
2. Même en enlevant le collision layer de la tilemap pour test, il préfère ne rien détecter que détecter le perso
3. Ne détecte que quand je suis en bas à droite
J'ai vérifié que le raycast est bien cadré entre le mob et le perso, ce qui est le cas (carrés violets) :
J'ai essayé avec la version pure (
Bref j'arrive pas à comprendre le soucis là
EDIT : j'ai un début de piste, le collision point est en haut à gauche (ça explique pas grand chose mébon)
il y a un an
C'est bon !
C'est pas super bien foutu, la changement de target se fait en local, j'ai dût rajouter un to_local :
StartChase_Raycast.set_target_position(StartChase_Raycast.to_local(Target.global_position+Vector2(0.0, -8.0)))
Une fonction qui m'a bien aidé pour voir le raycast :
get_tree().set_debug_collisions_hint(true)
(je crois qu'on peut l'activer dans les options aussi mais pas trouvé)
Bon ce qui devait être l'histoire de 10 minutes s'est transformé en matiné
Mébon j'ai appris des choses j'imagine
C'est pas super bien foutu, la changement de target se fait en local, j'ai dût rajouter un to_local :
StartChase_Raycast.set_target_position(StartChase_Raycast.to_local(Target.global_position+Vector2(0.0, -8.0)))
Une fonction qui m'a bien aidé pour voir le raycast :
get_tree().set_debug_collisions_hint(true)
(je crois qu'on peut l'activer dans les options aussi mais pas trouvé)
Bon ce qui devait être l'histoire de 10 minutes s'est transformé en matiné
Mébon j'ai appris des choses j'imagine
il y a un an
0-0
1 an
C'est bon !
C'est pas super bien foutu, la changement de target se fait en local, j'ai dût rajouter un to_local :
StartChase_Raycast.set_target_position(StartChase_Raycast.to_local(Target.global_position+Vector2(0.0, -8.0)))
Une fonction qui m'a bien aidé pour voir le raycast :
get_tree().set_debug_collisions_hint(true)
(je crois qu'on peut l'activer dans les options aussi mais pas trouvé)
Bon ce qui devait être l'histoire de 10 minutes s'est transformé en matiné
Mébon j'ai appris des choses j'imagine
C'est pas super bien foutu, la changement de target se fait en local, j'ai dût rajouter un to_local :
StartChase_Raycast.set_target_position(StartChase_Raycast.to_local(Target.global_position+Vector2(0.0, -8.0)))
Une fonction qui m'a bien aidé pour voir le raycast :
get_tree().set_debug_collisions_hint(true)
(je crois qu'on peut l'activer dans les options aussi mais pas trouvé)
Bon ce qui devait être l'histoire de 10 minutes s'est transformé en matiné
Mébon j'ai appris des choses j'imagine
J'aurai cru que c'était une histoire de layer, mais non, et c'est tant mieux bien joué à toi

Je vous aime les kheys, prenez soins de vous
il y a un an
Unreal Engine c'est vraiment fait pour la beauté de la 3D, sinon c'est généralement pas la peine (à noter que des jeux comme Octopath Traveler ont un aspect gameplay 2D mais des très jolies décors 3D, c'est probablement fait avec Unreal)
Les dév' sont compétents, c'est la même boîte qui font Fortnite et Epic Games (pas forcément besoin d'aimer Fortnite mais c'est juste pour dire qu'ils ont leur terrain de jeu), y a aussi beaucoup d'assets de dispo, dont des gratuits tous les mois
Mais son défaut c'est que globalement c'est une usine à gaz et c'est assez dur d'y plonger
Unity c'était la version 3D simple d'utilisation d'Unreal Engine, et pour la 2D du coup, mais les gérants sont des salops (réf: le dernier drama), à éviter aujourd'hui; y a probablement plus d'assets que Godot mais j'espère que ça sera voué à changer à mesure que les 'petits dév indé' changeront de moteur
Godot est tellement léger et cohérent, y a quelques bugs parfois (Unity n'en avait pas moins) mais à part ça c'est un sans faute pour ma part ! (J'ai pas testé la 3D nonobstant)
Les dév' sont compétents, c'est la même boîte qui font Fortnite et Epic Games (pas forcément besoin d'aimer Fortnite mais c'est juste pour dire qu'ils ont leur terrain de jeu), y a aussi beaucoup d'assets de dispo, dont des gratuits tous les mois
Mais son défaut c'est que globalement c'est une usine à gaz et c'est assez dur d'y plonger
Unity c'était la version 3D simple d'utilisation d'Unreal Engine, et pour la 2D du coup, mais les gérants sont des salops (réf: le dernier drama), à éviter aujourd'hui; y a probablement plus d'assets que Godot mais j'espère que ça sera voué à changer à mesure que les 'petits dév indé' changeront de moteur
Godot est tellement léger et cohérent, y a quelques bugs parfois (Unity n'en avait pas moins) mais à part ça c'est un sans faute pour ma part ! (J'ai pas testé la 3D nonobstant)
Etant en train de développer un jeu sur android je ne peux que confirme qu'unreal à vraiment du mal sur certaines chose
Chaque moteur à ses avantages et inconvénients, unreal c'est clairement la 3d, après tu peux très bien developer un jeu en 2d mais ça va être un peu plus technique sur certaines chose
bon courrage dans cette belle aventure que vous allez vivre
Chaque moteur à ses avantages et inconvénients, unreal c'est clairement la 3d, après tu peux très bien developer un jeu en 2d mais ça va être un peu plus technique sur certaines chose
bon courrage dans cette belle aventure que vous allez vivre
Viens tester la beta de onchepagnon, le jeu du forum: https://onche.org/topic/887825/beta-onchepagnon
il y a un an
0-0
1 an
C'est bon !
C'est pas super bien foutu, la changement de target se fait en local, j'ai dût rajouter un to_local :
StartChase_Raycast.set_target_position(StartChase_Raycast.to_local(Target.global_position+Vector2(0.0, -8.0)))
Une fonction qui m'a bien aidé pour voir le raycast :
get_tree().set_debug_collisions_hint(true)
(je crois qu'on peut l'activer dans les options aussi mais pas trouvé)
Bon ce qui devait être l'histoire de 10 minutes s'est transformé en matiné
Mébon j'ai appris des choses j'imagine
C'est pas super bien foutu, la changement de target se fait en local, j'ai dût rajouter un to_local :
StartChase_Raycast.set_target_position(StartChase_Raycast.to_local(Target.global_position+Vector2(0.0, -8.0)))
Une fonction qui m'a bien aidé pour voir le raycast :
get_tree().set_debug_collisions_hint(true)
(je crois qu'on peut l'activer dans les options aussi mais pas trouvé)
Bon ce qui devait être l'histoire de 10 minutes s'est transformé en matiné
Mébon j'ai appris des choses j'imagine
J'ai pas eu le temps de me réveiller pour t'aider, navré
J'ai pas encore eu besoin de Raycast mais ça viendra peut-être quand je ferai des lasers
Tu peux chercher la global_position d'un node, mais j'aime aussi utiliser owner.position. Le "owner" d'un node est automatiquement associé à son parent à la base (ça m'est arrivé de devoir le mettre manuellement sur des instances créées avec spawner mais rien de terrible), ce qui fait que cette position, appelée sur une Area2D du personnage, retournera la position du personnage par rapport à son parent "Monde". C'est ma façon de rester synchro avec tout ce qu'il se passe dans le monde, au cas où ça bougerait
Tu peux activer les options de debug pour afficher les hitbox et tutti quanti très facilement. C'est directement dans un des menus déroulants en haut à gauche, parmi les onglets "Projet", "Aide", etc. Je sais plus si ça s'appelle Debug ou autre chose, j'ai pas le pc sous les yeux
J'ai pas encore eu besoin de Raycast mais ça viendra peut-être quand je ferai des lasers
Tu peux chercher la global_position d'un node, mais j'aime aussi utiliser owner.position. Le "owner" d'un node est automatiquement associé à son parent à la base (ça m'est arrivé de devoir le mettre manuellement sur des instances créées avec spawner mais rien de terrible), ce qui fait que cette position, appelée sur une Area2D du personnage, retournera la position du personnage par rapport à son parent "Monde". C'est ma façon de rester synchro avec tout ce qu'il se passe dans le monde, au cas où ça bougerait
Tu peux activer les options de debug pour afficher les hitbox et tutti quanti très facilement. C'est directement dans un des menus déroulants en haut à gauche, parmi les onglets "Projet", "Aide", etc. Je sais plus si ça s'appelle Debug ou autre chose, j'ai pas le pc sous les yeux
il y a un an
J'ai pas eu le temps de me réveiller pour t'aider, navré
J'ai pas encore eu besoin de Raycast mais ça viendra peut-être quand je ferai des lasers
Tu peux chercher la global_position d'un node, mais j'aime aussi utiliser owner.position. Le "owner" d'un node est automatiquement associé à son parent à la base (ça m'est arrivé de devoir le mettre manuellement sur des instances créées avec spawner mais rien de terrible), ce qui fait que cette position, appelée sur une Area2D du personnage, retournera la position du personnage par rapport à son parent "Monde". C'est ma façon de rester synchro avec tout ce qu'il se passe dans le monde, au cas où ça bougerait
Tu peux activer les options de debug pour afficher les hitbox et tutti quanti très facilement. C'est directement dans un des menus déroulants en haut à gauche, parmi les onglets "Projet", "Aide", etc. Je sais plus si ça s'appelle Debug ou autre chose, j'ai pas le pc sous les yeux
J'ai pas encore eu besoin de Raycast mais ça viendra peut-être quand je ferai des lasers
Tu peux chercher la global_position d'un node, mais j'aime aussi utiliser owner.position. Le "owner" d'un node est automatiquement associé à son parent à la base (ça m'est arrivé de devoir le mettre manuellement sur des instances créées avec spawner mais rien de terrible), ce qui fait que cette position, appelée sur une Area2D du personnage, retournera la position du personnage par rapport à son parent "Monde". C'est ma façon de rester synchro avec tout ce qu'il se passe dans le monde, au cas où ça bougerait
Tu peux activer les options de debug pour afficher les hitbox et tutti quanti très facilement. C'est directement dans un des menus déroulants en haut à gauche, parmi les onglets "Projet", "Aide", etc. Je sais plus si ça s'appelle Debug ou autre chose, j'ai pas le pc sous les yeux
Merci je penserais à owner la prochaine fois que j'aurais des problèmes de position local/global
Et du coup j'ai déjà mis le debug d'hitbox dans mes inputs de debug, c'est très pratique
J'ai mes touches configurées sur le numpad :
9 : activation du debug
+ : speed x2
- : speed /2
* : pause/unpause
Si ça t'intéresse :
var DebugActivated = false
var GamePause = false
var GameSpeed = 1.
var GameSpeed_DefaultTimeScale = Engine.time_scale
func _input(event):
# Global Inputs
if (!OS.has_feature("standalone")):
# DEBUG
if event.is_action_pressed("debug_activation_9"):
# Activate debug
DebugActivated = !DebugActivated
if (DebugActivated):
print("[Debug activation]")
get_tree().set_debug_collisions_hint(true)
else:
print("[Debug desactivation]")
get_tree().set_debug_collisions_hint(false)
elif event.is_action_pressed("debug_speed_+"):
# Speed up
GameSpeed *= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_speed_-"):
# Speed down
GameSpeed /= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_pause_*"):
# Pause
if (!GamePause):
GamePause = true
print("[Game paused]")
Engine.time_scale = 0.0
else:
GamePause = false
print("[Game unpaused]")
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
Et du coup j'ai déjà mis le debug d'hitbox dans mes inputs de debug, c'est très pratique
J'ai mes touches configurées sur le numpad :
9 : activation du debug
+ : speed x2
- : speed /2
* : pause/unpause
Si ça t'intéresse :
var DebugActivated = false
var GamePause = false
var GameSpeed = 1.
var GameSpeed_DefaultTimeScale = Engine.time_scale
func _input(event):
# Global Inputs
if (!OS.has_feature("standalone")):
# DEBUG
if event.is_action_pressed("debug_activation_9"):
# Activate debug
DebugActivated = !DebugActivated
if (DebugActivated):
print("[Debug activation]")
get_tree().set_debug_collisions_hint(true)
else:
print("[Debug desactivation]")
get_tree().set_debug_collisions_hint(false)
elif event.is_action_pressed("debug_speed_+"):
# Speed up
GameSpeed *= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_speed_-"):
# Speed down
GameSpeed /= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_pause_*"):
# Pause
if (!GamePause):
GamePause = true
print("[Game paused]")
Engine.time_scale = 0.0
else:
GamePause = false
print("[Game unpaused]")
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
il y a un an
Etant en train de développer un jeu sur android je ne peux que confirme qu'unreal à vraiment du mal sur certaines chose
Chaque moteur à ses avantages et inconvénients, unreal c'est clairement la 3d, après tu peux très bien developer un jeu en 2d mais ça va être un peu plus technique sur certaines chose
bon courrage dans cette belle aventure que vous allez vivre
Chaque moteur à ses avantages et inconvénients, unreal c'est clairement la 3d, après tu peux très bien developer un jeu en 2d mais ça va être un peu plus technique sur certaines chose
bon courrage dans cette belle aventure que vous allez vivre
Merci khey ! Je confirme que je m'amuse beaucoup
il y a un an
Merci je penserais à owner la prochaine fois que j'aurais des problèmes de position local/global
Et du coup j'ai déjà mis le debug d'hitbox dans mes inputs de debug, c'est très pratique
J'ai mes touches configurées sur le numpad :
9 : activation du debug
+ : speed x2
- : speed /2
* : pause/unpause
Si ça t'intéresse :
var DebugActivated = false
var GamePause = false
var GameSpeed = 1.
var GameSpeed_DefaultTimeScale = Engine.time_scale
func _input(event):
# Global Inputs
if (!OS.has_feature("standalone")):
# DEBUG
if event.is_action_pressed("debug_activation_9"):
# Activate debug
DebugActivated = !DebugActivated
if (DebugActivated):
print("[Debug activation]")
get_tree().set_debug_collisions_hint(true)
else:
print("[Debug desactivation]")
get_tree().set_debug_collisions_hint(false)
elif event.is_action_pressed("debug_speed_+"):
# Speed up
GameSpeed *= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_speed_-"):
# Speed down
GameSpeed /= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_pause_*"):
# Pause
if (!GamePause):
GamePause = true
print("[Game paused]")
Engine.time_scale = 0.0
else:
GamePause = false
print("[Game unpaused]")
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
Et du coup j'ai déjà mis le debug d'hitbox dans mes inputs de debug, c'est très pratique
J'ai mes touches configurées sur le numpad :
9 : activation du debug
+ : speed x2
- : speed /2
* : pause/unpause
Si ça t'intéresse :
var DebugActivated = false
var GamePause = false
var GameSpeed = 1.
var GameSpeed_DefaultTimeScale = Engine.time_scale
func _input(event):
# Global Inputs
if (!OS.has_feature("standalone")):
# DEBUG
if event.is_action_pressed("debug_activation_9"):
# Activate debug
DebugActivated = !DebugActivated
if (DebugActivated):
print("[Debug activation]")
get_tree().set_debug_collisions_hint(true)
else:
print("[Debug desactivation]")
get_tree().set_debug_collisions_hint(false)
elif event.is_action_pressed("debug_speed_+"):
# Speed up
GameSpeed *= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_speed_-"):
# Speed down
GameSpeed /= 2.
print("[GameSpeed set to "+str(GameSpeed)+".]")
if (!GamePause):
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
elif event.is_action_pressed("debug_pause_*"):
# Pause
if (!GamePause):
GamePause = true
print("[Game paused]")
Engine.time_scale = 0.0
else:
GamePause = false
print("[Game unpaused]")
Engine.time_scale = GameSpeed * GameSpeed_DefaultTimeScale
Ça a l'air très abordable jusque là
Ma façon de debug consiste surtout à utiliser les breakpoints et des prints. Je visualise rarement les hitbox vu que c'est déjà plutôt bien configuré
Mes touches de debug sont réservées à l'apparition de personnage, d'ennemi, au changement de sens de défilement, en attendant d'avoir les systèmes pour l'automatiser
Ma façon de debug consiste surtout à utiliser les breakpoints et des prints. Je visualise rarement les hitbox vu que c'est déjà plutôt bien configuré
Mes touches de debug sont réservées à l'apparition de personnage, d'ennemi, au changement de sens de défilement, en attendant d'avoir les systèmes pour l'automatiser
il y a un an
@VisualStudio @Millefi-Hime
Vous connaissez une façon d'instancier une scène depuis 0 ?
De base j'avais eu quelques problèmes avec duplicate puis-ce que les références gardaient les références du premier objet et pas les nouvelles du dupliqué, ce qui est chiant mais logique
Mais en faite là je découvre que load(<FileName>).instantiate() c'est pareil, je suis pas sûr de tout comprendre mais on dirait que le premier instancié modifie la scène pour les prochaines instanciation (du coup j'avais des armes dans des coffres, et quand j'en équipais une ça prenais la référence de celle du coffre, et était automatiquement libéré quand le coffre disparaissait au changement de map)
Je me suis débrouillé pour reSet les références mais c'est pas super propre, du coup j'aimerais load une scene tel quelle est dans l'éditeur sans modification, mais j'ai pas trouvé comment
Vous connaissez une façon d'instancier une scène depuis 0 ?
De base j'avais eu quelques problèmes avec duplicate puis-ce que les références gardaient les références du premier objet et pas les nouvelles du dupliqué, ce qui est chiant mais logique
Mais en faite là je découvre que load(<FileName>).instantiate() c'est pareil, je suis pas sûr de tout comprendre mais on dirait que le premier instancié modifie la scène pour les prochaines instanciation (du coup j'avais des armes dans des coffres, et quand j'en équipais une ça prenais la référence de celle du coffre, et était automatiquement libéré quand le coffre disparaissait au changement de map)
Je me suis débrouillé pour reSet les références mais c'est pas super propre, du coup j'aimerais load une scene tel quelle est dans l'éditeur sans modification, mais j'ai pas trouvé comment
il y a un an
0-0
1 an
@VisualStudio @Millefi-Hime
Vous connaissez une façon d'instancier une scène depuis 0 ?
De base j'avais eu quelques problèmes avec duplicate puis-ce que les références gardaient les références du premier objet et pas les nouvelles du dupliqué, ce qui est chiant mais logique
Mais en faite là je découvre que load(<FileName>).instantiate() c'est pareil, je suis pas sûr de tout comprendre mais on dirait que le premier instancié modifie la scène pour les prochaines instanciation (du coup j'avais des armes dans des coffres, et quand j'en équipais une ça prenais la référence de celle du coffre, et était automatiquement libéré quand le coffre disparaissait au changement de map)
Je me suis débrouillé pour reSet les références mais c'est pas super propre, du coup j'aimerais load une scene tel quelle est dans l'éditeur sans modification, mais j'ai pas trouvé comment
Vous connaissez une façon d'instancier une scène depuis 0 ?
De base j'avais eu quelques problèmes avec duplicate puis-ce que les références gardaient les références du premier objet et pas les nouvelles du dupliqué, ce qui est chiant mais logique
Mais en faite là je découvre que load(<FileName>).instantiate() c'est pareil, je suis pas sûr de tout comprendre mais on dirait que le premier instancié modifie la scène pour les prochaines instanciation (du coup j'avais des armes dans des coffres, et quand j'en équipais une ça prenais la référence de celle du coffre, et était automatiquement libéré quand le coffre disparaissait au changement de map)
Je me suis débrouillé pour reSet les références mais c'est pas super propre, du coup j'aimerais load une scene tel quelle est dans l'éditeur sans modification, mais j'ai pas trouvé comment
J'ai pas eu ce soucis encore, pourtant j'utilise load(...).instantiate() aussi
En toute logique, tes instances doivent avoir des variables indépendantes. Est-ce que tu as vérifié que tu ciblais bien l'ID de référence de l'instance et pas la scène elle-même?
var instance = load("res:/truc/machin.tscn").instantiate()
instance.add_child()
instance.owner = self
instance.variable = 40
etc...
Tu gardes cet ID en mémoire quelque part?
Mais à bien regarder ton soucis, tu devrais peut-être associer ça à une classe de type Ressource, pour pouvoir sauvegarder les stats de tes armes et les conserver entre plusieurs scènes
C'est comme ça que je fais pour que je puisse instancier le personnage joueur n'importe quand sans qu'il n'oublie ses stats. Un Autoload se charge de conserver les données importantes et les rendre accessibles.
En toute logique, tes instances doivent avoir des variables indépendantes. Est-ce que tu as vérifié que tu ciblais bien l'ID de référence de l'instance et pas la scène elle-même?
var instance = load("res:/truc/machin.tscn").instantiate()
instance.add_child()
instance.owner = self
instance.variable = 40
etc...
Tu gardes cet ID en mémoire quelque part?
Mais à bien regarder ton soucis, tu devrais peut-être associer ça à une classe de type Ressource, pour pouvoir sauvegarder les stats de tes armes et les conserver entre plusieurs scènes
C'est comme ça que je fais pour que je puisse instancier le personnage joueur n'importe quand sans qu'il n'oublie ses stats. Un Autoload se charge de conserver les données importantes et les rendre accessibles.
il y a un an
0-0
1 an
@VisualStudio @Millefi-Hime
Vous connaissez une façon d'instancier une scène depuis 0 ?
De base j'avais eu quelques problèmes avec duplicate puis-ce que les références gardaient les références du premier objet et pas les nouvelles du dupliqué, ce qui est chiant mais logique
Mais en faite là je découvre que load(<FileName>).instantiate() c'est pareil, je suis pas sûr de tout comprendre mais on dirait que le premier instancié modifie la scène pour les prochaines instanciation (du coup j'avais des armes dans des coffres, et quand j'en équipais une ça prenais la référence de celle du coffre, et était automatiquement libéré quand le coffre disparaissait au changement de map)
Je me suis débrouillé pour reSet les références mais c'est pas super propre, du coup j'aimerais load une scene tel quelle est dans l'éditeur sans modification, mais j'ai pas trouvé comment
Vous connaissez une façon d'instancier une scène depuis 0 ?
De base j'avais eu quelques problèmes avec duplicate puis-ce que les références gardaient les références du premier objet et pas les nouvelles du dupliqué, ce qui est chiant mais logique
Mais en faite là je découvre que load(<FileName>).instantiate() c'est pareil, je suis pas sûr de tout comprendre mais on dirait que le premier instancié modifie la scène pour les prochaines instanciation (du coup j'avais des armes dans des coffres, et quand j'en équipais une ça prenais la référence de celle du coffre, et était automatiquement libéré quand le coffre disparaissait au changement de map)
Je me suis débrouillé pour reSet les références mais c'est pas super propre, du coup j'aimerais load une scene tel quelle est dans l'éditeur sans modification, mais j'ai pas trouvé comment
Aussi, je ne sais pas si y a une raison particulière mais quand on fait un @export Array on ne peut pas mettre de Node, juste des Nodepath
il y a un an
J'ai pas eu ce soucis encore, pourtant j'utilise load(...).instantiate() aussi
En toute logique, tes instances doivent avoir des variables indépendantes. Est-ce que tu as vérifié que tu ciblais bien l'ID de référence de l'instance et pas la scène elle-même?
var instance = load("res:/truc/machin.tscn").instantiate()
instance.add_child()
instance.owner = self
instance.variable = 40
etc...
Tu gardes cet ID en mémoire quelque part?
Mais à bien regarder ton soucis, tu devrais peut-être associer ça à une classe de type Ressource, pour pouvoir sauvegarder les stats de tes armes et les conserver entre plusieurs scènes
C'est comme ça que je fais pour que je puisse instancier le personnage joueur n'importe quand sans qu'il n'oublie ses stats. Un Autoload se charge de conserver les données importantes et les rendre accessibles.
En toute logique, tes instances doivent avoir des variables indépendantes. Est-ce que tu as vérifié que tu ciblais bien l'ID de référence de l'instance et pas la scène elle-même?
var instance = load("res:/truc/machin.tscn").instantiate()
instance.add_child()
instance.owner = self
instance.variable = 40
etc...
Tu gardes cet ID en mémoire quelque part?
Mais à bien regarder ton soucis, tu devrais peut-être associer ça à une classe de type Ressource, pour pouvoir sauvegarder les stats de tes armes et les conserver entre plusieurs scènes
C'est comme ça que je fais pour que je puisse instancier le personnage joueur n'importe quand sans qu'il n'oublie ses stats. Un Autoload se charge de conserver les données importantes et les rendre accessibles.
Ouep je viens de revérifier à l'instant, je load bien depuis le nom de fichier
Je vais recheck le moment où je le crée pour vérifier si ça change à un moment donné
Je vais recheck le moment où je le crée pour vérifier si ça change à un moment donné
il y a un an
J'ai commencé à apprendre Unreal mais en lisant vos témoignages je commence à douter
De base j'étais plus Unity mais j'aime pas leur mentalité de fdp
De base j'étais plus Unity mais j'aime pas leur mentalité de fdp
Perdez pas espoir
il y a un an
J'ai pas eu ce soucis encore, pourtant j'utilise load(...).instantiate() aussi
En toute logique, tes instances doivent avoir des variables indépendantes. Est-ce que tu as vérifié que tu ciblais bien l'ID de référence de l'instance et pas la scène elle-même?
var instance = load("res:/truc/machin.tscn").instantiate()
instance.add_child()
instance.owner = self
instance.variable = 40
etc...
Tu gardes cet ID en mémoire quelque part?
Mais à bien regarder ton soucis, tu devrais peut-être associer ça à une classe de type Ressource, pour pouvoir sauvegarder les stats de tes armes et les conserver entre plusieurs scènes
C'est comme ça que je fais pour que je puisse instancier le personnage joueur n'importe quand sans qu'il n'oublie ses stats. Un Autoload se charge de conserver les données importantes et les rendre accessibles.
En toute logique, tes instances doivent avoir des variables indépendantes. Est-ce que tu as vérifié que tu ciblais bien l'ID de référence de l'instance et pas la scène elle-même?
var instance = load("res:/truc/machin.tscn").instantiate()
instance.add_child()
instance.owner = self
instance.variable = 40
etc...
Tu gardes cet ID en mémoire quelque part?
Mais à bien regarder ton soucis, tu devrais peut-être associer ça à une classe de type Ressource, pour pouvoir sauvegarder les stats de tes armes et les conserver entre plusieurs scènes
C'est comme ça que je fais pour que je puisse instancier le personnage joueur n'importe quand sans qu'il n'oublie ses stats. Un Autoload se charge de conserver les données importantes et les rendre accessibles.
Ok j'ai recheck, et je confirme que ça reste entre 2 instances, en faite j'ai 2 trucs :
* Les armes qui sont directement ajoutés aux coffres depuis l'éditeur
* Les armes de début du jeu dans l'inventaire qui sont ajouté via instantiation() au lancement
Et à vrai dire, même à partir du 2nd coffre la référence est déjà perdu:
Normalement je transforme les Nodepath en Node, quand ça le fait ça affiche dans DEBUG 1 (dans le ready),
DEBUG 0 quand ça entre dans le _ready
Donc quand je suis dans le ready la variable a déjà été changée,
je sais pas trop si c'est lié aux var @export qui seraient global (ça me paraît bizarre), aux Nodepath, ou autre
* Les armes qui sont directement ajoutés aux coffres depuis l'éditeur
* Les armes de début du jeu dans l'inventaire qui sont ajouté via instantiation() au lancement
Et à vrai dire, même à partir du 2nd coffre la référence est déjà perdu:
Normalement je transforme les Nodepath en Node, quand ça le fait ça affiche dans DEBUG 1 (dans le ready),
DEBUG 0 quand ça entre dans le _ready
Donc quand je suis dans le ready la variable a déjà été changée,
je sais pas trop si c'est lié aux var @export qui seraient global (ça me paraît bizarre), aux Nodepath, ou autre
il y a un an
Ronleroukmout
1 an
J'ai commencé à apprendre Unreal mais en lisant vos témoignages je commence à douter
De base j'étais plus Unity mais j'aime pas leur mentalité de fdp
De base j'étais plus Unity mais j'aime pas leur mentalité de fdp
Unreal c'est bien aussi si ça te correspond, même si c'est surtout bien pour la 3D
il y a un an
Ok j'ai recheck, et je confirme que ça reste entre 2 instances, en faite j'ai 2 trucs :
* Les armes qui sont directement ajoutés aux coffres depuis l'éditeur
* Les armes de début du jeu dans l'inventaire qui sont ajouté via instantiation() au lancement
Et à vrai dire, même à partir du 2nd coffre la référence est déjà perdu:
Normalement je transforme les Nodepath en Node, quand ça le fait ça affiche dans DEBUG 1 (dans le ready),
DEBUG 0 quand ça entre dans le _ready
Donc quand je suis dans le ready la variable a déjà été changée,
je sais pas trop si c'est lié aux var @export qui seraient global (ça me paraît bizarre), aux Nodepath, ou autre
* Les armes qui sont directement ajoutés aux coffres depuis l'éditeur
* Les armes de début du jeu dans l'inventaire qui sont ajouté via instantiation() au lancement
Et à vrai dire, même à partir du 2nd coffre la référence est déjà perdu:
Normalement je transforme les Nodepath en Node, quand ça le fait ça affiche dans DEBUG 1 (dans le ready),
DEBUG 0 quand ça entre dans le _ready
Donc quand je suis dans le ready la variable a déjà été changée,
je sais pas trop si c'est lié aux var @export qui seraient global (ça me paraît bizarre), aux Nodepath, ou autre
J'ai un peu de mal à savoir comment ton truc fonctionne, je saurai pas déchiffrer l'erreur sur ce coup-là
Qu'est-ce qui contient quoi? Qu'est-ce qui charge quoi, quand, et comment?
L'inventaire de ton personnage ou d'un coffre contient quel genre d'objet pour représenter une arme? Tu enregistres des PackedScenes dans un dictionnaire?
Qu'est-ce qui contient quoi? Qu'est-ce qui charge quoi, quand, et comment?
L'inventaire de ton personnage ou d'un coffre contient quel genre d'objet pour représenter une arme? Tu enregistres des PackedScenes dans un dictionnaire?
il y a un an