Gumboy Débutant
Messages : 10 Localisation : Dijon
| Sujet: Instance_nearest zoné ? Jeu 16 Fév 2017 - 19:54 | |
| Bonsoir à vous me revoilà avec un autre soucis (j'espère un peu plus complexe que mon dernier post ^^') concernant mon projet de rogue-like. Problème :Je me suis crée un script d'auto-lock qui se joue avec l'angle du joystick droit de mon gamepad et la touche R2/RB (autolock). En gros lorsque j'ai mon joystick droit d'actif, j'ai une vision d'angle de (precision) + direction du joystick qui s'active, et celui-ci détecte si un ennemie (tous parentés avec une instance global d'ennemies) est dans cette zone, et le lock tant que le joueur le suit avec le joystick droit. Le problème, c'est que dans mon script, la vision ne détecte uniquement l'objet si celui-ci est le plus proche du joueur, même si celui-ci est hors de la zone de vision. Donc peut-on mettre une condition à une instance_nearest() pour que celui-ci ne soit identifié que dans une zone spécifique ? - Code:
-
///scr_player_lock() var posdir = instance_nearest(x,y,obj_life_parent);
if instance_exists(obj_life_parent) { var a = point_direction(x,y, posdir.x, posdir.y) }
///init de l'autolock if((xdir !=0) || (ydir !=0)) { targetlock = 0; rdir = point_direction(0,0, xdir, ydir); obj_locktarget.x = 0; obj_locktarget.y = 0; if (autolock) && instance_exists(obj_life_parent) && (rdir<a+obj_stats_player.precision && rdir>a-obj_stats_player.precision) { if point_distance(x,y,posdir.x,posdir.y)<400 { targetlock = 1; obj_locktarget.x = posdir.x; obj_locktarget.y = posdir.y; rdir = point_direction(x,y, posdir.x, posdir.y); } } } else { if ((xaxis != 0) || (yaxis != 0)) { targetlock = 0; rdir = point_direction(0,0, xaxis, yaxis); obj_locktarget.x = 0; obj_locktarget.y = 0; } }
if gamepad_button_check_released(0,gp_shoulderrb) { targetlock =0; obj_locktarget.x = 0; obj_locktarget.y = 0; }
j'ai fait un petit exemple rapide sous paint : -en haut est ce que j'ai actuellement. -en bas ce que je souhaiterais faire. partie rouge : zone de detection de instance_nearest() trait bleu : le lock auto boule grise : ennemies pour finir, je sait que mon problème se situe dans ma variable "posdir" et qu'il faudrait que celle-ci soit : posdir = ((instance_nearest(x,y,mon_parent_ennemy) dans la zone de mon rdir + precision) mais je ne sait comment formuler ça :/ Merci d'avance pour votre réponse ! |
|
Griph42 Débutant
Messages : 10 Localisation : France (rhone alpes) Projet Actuel : Demon expel
| Sujet: Re: Instance_nearest zoné ? Lun 13 Mar 2017 - 13:23 | |
| Tu n'a qu'a mettre if distance_to_point(variable x du monstre,variable y du monstre)<distance que tu veut
|
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Instance_nearest zoné ? Mar 14 Mar 2017 - 11:03 | |
| Il va falloir que tu recrées l'algorithme d'instance_nearest manuellement, en bouclant sur toutes les instances voulues et en ajoutant ta condition de cône de vision dans le test. Edit: tu as un instance_nearest manuel dans la FAQ: https://cbna.forumactif.com/t13101-faq-instances |
|
Contenu sponsorisé
| Sujet: Re: Instance_nearest zoné ? | |
| |
|