Gizmo199
Member
^^^ The above is a video of the issue I am having ^^^
SOLUTION BELOW
Issue:
So the issue I am having is that I am trying to sort each object via its depth to be either in front or behind objects near them. Much like the isometric / RPG trick:
Code:
depth = -y
What I have tried:
So here are some different methods I have tried, none of which gives me the right success.
Attempt 1:
Code:
var _dir = cos(point_distance(x, y, x+lengthdir_x(height, _camAngle-90), y+lengthdir_y(height, _camAngle-90)));
depth = -floor(_dir)
Code:
depth = -(y+sprite_height/4)//-point_direction(x, y, -_camAngle+90, _camAngle+90);
Code:
depth = (image_angle/360)-0.5
Code:
var _vW = camera_get_view_width(view_camera[0])
var _vH = camera_get_view_height(view_camera[0])
var _vX = camera_get_view_x(view_camera[0])
var _vY = camera_get_view_y(view_camera[0])
depth = point_distance(x, y, _vX+_vW, _vY+_vH)/10;
Code:
var _camAngle = abs(camera_get_view_angle(view_camera[0]));
if (_camAngle<180) & (_camAngle > 0) return -y
if ( _camAngle > 90 && _camAngle < 180 ) return -x
if ( _camAngle > 180 && _camAngle < 360 ) return y-room_height
if ( _camAngle > 270 && _camAngle < 360 ) return x-room_width
Here is my tree draw event as well:
Code:
var _hCalc = height/image_number
var _camAngle = camera_get_view_angle(view_camera[0]);
for ( var i=0; i<image_number; i++ ){
var _sway = (cos(((current_time)/250)+swayOffset)*image_xscale)*i
var _ang = image_angle-(_sway/2)//-(_camAngle/90);
if ( i == image_number-1 ){
_ang = (-_sway/4)-_camAngle;
}
if ( !sway ){
_sway = 0;
}
var _ldx = lengthdir_x(_sway+(i*_hCalc*image_xscale), -_camAngle+90);
var _ldy = lengthdir_y(i*_hCalc*image_yscale, _camAngle+90);
var _midX = camera_get_view_x(view_camera[0])+(camera_get_view_width(view_camera[0])/2)
var _midY = camera_get_view_y(view_camera[0])+(camera_get_view_height(view_camera[0])/2)
draw_sprite_ext(sprite_index, i, x+_ldx, y+_ldy, image_xscale, image_yscale, _ang, mainCol[i], image_alpha)
}
Question:
What is the best solution to this problem? I am trying to keep is simple and easy to implement without getting into z buffers and what not. (that stuff kinda goes over my head). I know it would help to keep the different layers at different depths and it would be a little easier to manage but seeing as I am using a for loop to draw each layer at the depth of the object, I have no clue how to really do that. Any help is MUUUCHH appreciated.
Desired Effect:
Thanks in advance! Love this community and hope I can share this little engine design for beginners once I am done!
Last edited: