bitetti

Inicio do código de mira do game

Aug 3rd, 2014
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.49 KB | None | 0 0
  1.  
  2. extends Control
  3.  
  4. export(Texture) var mira1
  5.  
  6. var global
  7. var viewPort
  8. var enemyNode
  9. var visibles = []
  10. var verts = Vector2Array()
  11. var uvs = Vector2Array()
  12. var angle = 0
  13. var RAD = 210*PI/180
  14. var PIH = PI/2
  15.        
  16. func _process(delta):
  17.     var cam = global.current_camera
  18.     if cam==null:
  19.         return
  20.    
  21.     #print(cam.unproject_position( Vector3(0,0,0) ))
  22.     var oudVSize = visibles.size()
  23.     visibles.clear()
  24.     var cOri = cam.get_global_transform().origin #basis.xform( Vector3(0,0,1) )
  25.     var cBas = cam.get_global_transform().basis.xform( Vector3(0,0,1) )
  26.     var rv = viewPort.get_rect()
  27.     for enemy in enemyNode.get_children():
  28.         var pos = cam.unproject_position( enemy.get_global_transform().origin )
  29.         if pos.x>=0 and pos.x<rv.size.width:
  30.             if pos.y>=0 and pos.y<rv.size.height:
  31.                 var eP = enemy.get_global_transform().origin - cOri
  32.                 if cBas.dot( eP.normalized() )<0:
  33.                     visibles.push_back(pos)
  34.    
  35.     if visibles.size()>0 or visibles.size() != oudVSize:
  36.         angle += RAD*delta
  37.         if angle>PI:
  38.             angle = -PI + angle-PI
  39.         update()
  40.    
  41.  
  42. func _draw():
  43.    
  44.     var d = Vector2(0,1).rotated(angle)
  45.     var v
  46.     v = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle)
  47.     uvs[0].x = v.x
  48.     uvs[0].y = v.y
  49.     v = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle+PIH)
  50.     uvs[1].x = v.x
  51.     uvs[1].y = v.y
  52.     v = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle+PI)
  53.     uvs[2].x = v.x
  54.     uvs[2].y = v.y
  55.     v = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle-PIH)
  56.     uvs[3].x = v.x
  57.     uvs[3].y = v.y
  58.    
  59.     if visibles.size()>0:
  60.         for p in visibles:
  61.             #draw_texture( mira1, Vector2(p.x-32,p.y-32) )
  62.             #draw_set_transform(Vector2(p.x,p.y), 0, Vector2(1,1))
  63.             verts[0].x = -32 + p.x
  64.             verts[0].y = -32 + p.y
  65.             verts[1].x = 32 + p.x
  66.             verts[1].y = -32 + p.y
  67.             verts[2].x = 32 + p.x
  68.             verts[2].y = 32 + p.y
  69.             verts[3].x = -32 + p.x
  70.             verts[3].y = 32 + p.y
  71.             draw_colored_polygon( verts, Color(1.0,1.0,1.0,1.0), uvs, mira1 )
  72.  
  73. func _ready():
  74.     global = get_node("/root/Persistente")
  75.  
  76.     viewPort = get_viewport()
  77.     enemyNode = get_node("/root").get_child( get_node("/root").get_child_count() -1 ).get_node("inimigos")
  78.    
  79.     # se objeto inimigos estiver vazio monta um fake
  80.     if enemyNode==null:
  81.         enemyNode = Node.new()
  82.    
  83.     # desenha retangulo
  84.     verts.push_back( Vector2(-32,-32) )
  85.     verts.push_back( Vector2(32,-32) )
  86.     verts.push_back( Vector2(32,32) )
  87.     verts.push_back( Vector2(-32,32) )
  88.     uvs.push_back( Vector2(0,0) )
  89.     uvs.push_back( Vector2(1,0) )
  90.     uvs.push_back( Vector2(1,1) )
  91.     uvs.push_back( Vector2(0,1) )
  92.    
  93.  
  94.     set_process(true)
Advertisement
Add Comment
Please, Sign In to add comment