AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Instance_nearest zoné ?

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Gumboy
Débutant
avatar

Messages : 10
Localisation : Dijon

MessageSujet: Instance_nearest zoné ?   Jeu 16 Fév 2017 - 18:54

Bonsoir à vous Smile

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 !
Revenir en haut Aller en bas
Griph42
Débutant
avatar

Messages : 10
Localisation : Rhone alpes
Projet Actuel : Demon expel
MMORPG a monde ouvert

MessageSujet: Re: Instance_nearest zoné ?   Lun 13 Mar 2017 - 12:23

Tu n'a qu'a mettre
if distance_to_point(variable x du monstre,variable y du monstre)<distance que tu veut

_________________
Mr noisette est dans la place !!!
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Instance_nearest zoné ?   Mar 14 Mar 2017 - 10: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: http://cbna.forumactif.com/t13101-faq-instances

_________________
                 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Instance_nearest zoné ?   

Revenir en haut Aller en bas
 
Instance_nearest zoné ?
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: