Advertisement
Multirious

Draw Angle and Normal

Feb 5th, 2022 (edited)
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # This is what your data array should looks like
  2. normal_data = {"position" : <collider's position>, "normal" : <normal>, "angle_before" : <old_angle>, "angle_after" : <new_angle>}
  3. data.append(normal_data )
  4.  
  5. func draw_normal(object_position: Vector2, object_velocity: Vector2, data: Array) -> void:
  6.     draw_line(Vector2.ZERO, object_velocity / 5, Color.paleturquoise)
  7.    
  8.     for i in previous_normals.size():
  9.         var alpha = inverse_lerp(0, data.size(), i)
  10.         draw_set_transform(data[i]["position"] - object_position, 0, Vector2.ONE)
  11.        
  12.         var normal_dir := Vector2(cos(data[i]["normal"]), sin(data[i]["normal"]))
  13.         var normal_color := Color.aquamarine
  14.         normal_color.a = alpha
  15.         draw_line(-100 * normal_dir, 100 * normal_dir, normal_color)
  16.         draw_line((-100 * normal_dir).rotated(1.5708), (100 * normal_dir).rotated(1.5708), normal_color)
  17.        
  18.         var before_dir := Vector2(cos(data[i]["angle_before"]), sin(data[i]["angle_before"]))
  19.         var before_dir_color := Color.darkorchid
  20.         before_dir_color.a = alpha
  21.         draw_line(Vector2.ZERO, -100 * before_dir, before_dir_color)
  22.        
  23.         var after_dir := Vector2(cos(data[i]["angle_after"]), sin(data[i]["angle_after"]))
  24.         var after_dir_color := Color.darkorchid
  25.         after_dir_color.a = alpha
  26.         draw_line(Vector2.ZERO, 100 * after_dir, after_dir_color)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement