La position est décalée, comment l’aligner ? – Aide

La position est décalée, comment l’aligner ?  – Aide

2024-05-27 18:16:26

Version Godot

v4.2.2.stable.official [15073afe3]

Question

J’essaie de générer des acteurs autour d’une unité. Actuellement, les acteurs spawnent, mais bien décalés et en dehors de la carte (voir bits entourés en rouge dans l’image ci-dessous). Ce décalage se produit également dans les formes de collision que j’instancie pour tester si la position d’apparition souhaitée est libre, ainsi que dans la grille que je dessine, donc je fais clairement quelque chose de mal avec les positions.

J’ai essayé global_position et position, en se référant et/ou en définissant chacun.

Est-ce que j’ai raté quelque chose d’évident ? Toute aide serait grandement appréciée !

## génère le nombre requis d’acteurs de manière aléatoire autour de la position de l’unité func _spawn_actors() -> void: var max_attempts: int = 32 var pos_variance: int = floor(spawn_radius / 2) for i in unit_size: for j in max_attempts: var rand_x : int = randi_range(global_position.x – pos_variance, global_position.x + pos_variance) var rand_y : int = randi_range(global_position.y – pos_variance, global_position.y + pos_variance) var spawn_pos : Vector2 = Vector2(rand_x, rand_y) var space_state : PhysicsDirectSpaceState2D = get_world_2d().direct_space_state var shape_query_params : PhysicsShapeQueryParameters2D = PhysicsShapeQueryParameters2D.new() var shape : CircleShape2D = CircleShape2D.new() shape.radius = 6 shape_query_params.shape = shape shape_query_params.transform.origin = spawn_pos # vérifier les résultats de la variable de requête : Array[Dictionary] = space_state.intersect_shape(shape_query_params) var filtered_array: Array = results.filter( func (collision_object): return collision_object.collider.is_in_group(“actor”) ) # sortie visuelle et console pour le débogage #print(results) var Area_2d = Area2D. new() Area_2d.position = shape_query_params.transform.origin var collision_shape_2d = CollisionShape2D.new() var collision_shape = CircleShape2D.new() collision_shape.radius = shape.radius collision_shape_2d.shape = collision_shape Area_2d.add_child(collision_shape_2d) add_child(area_2d) # si aucune collision si filtered_array.size() == 0 : var acteur : Acteur = acteur_scene.instantiate() acteur.position = spawn_pos print(“Unit pos: “, global_position, ” | acteur (“”, acteur, “) généré à : “, spawn_pos) add_child(acteur) pause
#position #est #décalée #comment #laligner #Aide
1716831626

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.