Die eleganteste Lösung sind die LOD-Stufen.
Sieh in der Hilfe unter
LOD Manager, LOD0, LOD1 und d3dlodfactor nach.
Die Mesh der höheren LOD-Stufen musst Du dann nur verkleinern.
Willst Du LOD nicht verwenden, kannst Du der Entity eine Aktion zuweisen, die so (oder ähnlich) aussieht:
action shrink_far(){
// warte bis player-entity existiert
while(!player){wait(1);}
while(1){
// wenn Abstand > 1000
if(vec_dist(my.x, player.x)>1000){
if(my.scale_x==1){
vec_scale(my.scale_x, 0.5);
}
}else{
if(my.scale_x!=1){
vec_set(my.scale_x, vector(1,1,1));
}
}
wait(1);
}
}
Diese Lösungen erzeugen natürlich ein ruckartiges Verkleinern des Modells.
Wenn Du ein weiches Verkleinern der Entity ab einer bestimmten Entfernung willst ist der Aufwand etwas größer, aber auch das geht natürlich.