浏览代码

lot of work on 2D lighting and isometric maps

added a new demo, isometric_light that does full isometric sorting,
lights, shadows, etc.
Juan Linietsky 10 年之前
父节点
当前提交
09489e3a78
共有 100 个文件被更改,包括 100 次插入0 次删除
  1. 4 0
      LICENSE.md
  2. 二进制
      demos/2d/isometric_light/character_shder.res
  3. 二进制
      demos/2d/isometric_light/column.scn
  4. 96 0
      demos/2d/isometric_light/cubio.gd
  5. 二进制
      demos/2d/isometric_light/cubio.scn
  6. 二进制
      demos/2d/isometric_light/cubio/idle0001.png
  7. 二进制
      demos/2d/isometric_light/cubio/idle0002.png
  8. 二进制
      demos/2d/isometric_light/cubio/idle0003.png
  9. 二进制
      demos/2d/isometric_light/cubio/idle0004.png
  10. 二进制
      demos/2d/isometric_light/cubio/idle0005.png
  11. 二进制
      demos/2d/isometric_light/cubio/idle0006.png
  12. 二进制
      demos/2d/isometric_light/cubio/idle0007.png
  13. 二进制
      demos/2d/isometric_light/cubio/idle0008.png
  14. 二进制
      demos/2d/isometric_light/cubio/idle0009.png
  15. 二进制
      demos/2d/isometric_light/cubio/idle0010.png
  16. 二进制
      demos/2d/isometric_light/cubio/idle0011.png
  17. 二进制
      demos/2d/isometric_light/cubio/idle0012.png
  18. 二进制
      demos/2d/isometric_light/cubio/idle0013.png
  19. 二进制
      demos/2d/isometric_light/cubio/idle0014.png
  20. 二进制
      demos/2d/isometric_light/cubio/idle0015.png
  21. 二进制
      demos/2d/isometric_light/cubio/idle0016.png
  22. 二进制
      demos/2d/isometric_light/cubio/idle0017.png
  23. 二进制
      demos/2d/isometric_light/cubio/idle0018.png
  24. 二进制
      demos/2d/isometric_light/cubio/idle0019.png
  25. 二进制
      demos/2d/isometric_light/cubio/idle0020.png
  26. 二进制
      demos/2d/isometric_light/cubio/idle0021.png
  27. 二进制
      demos/2d/isometric_light/cubio/idle0022.png
  28. 二进制
      demos/2d/isometric_light/cubio/idle0023.png
  29. 二进制
      demos/2d/isometric_light/cubio/idle0024.png
  30. 二进制
      demos/2d/isometric_light/cubio/idle0025.png
  31. 二进制
      demos/2d/isometric_light/cubio/idle0026.png
  32. 二进制
      demos/2d/isometric_light/cubio/idle0027.png
  33. 二进制
      demos/2d/isometric_light/cubio/idle0028.png
  34. 二进制
      demos/2d/isometric_light/cubio/idle0029.png
  35. 二进制
      demos/2d/isometric_light/cubio/idle0030.png
  36. 二进制
      demos/2d/isometric_light/cubio/idle0031.png
  37. 二进制
      demos/2d/isometric_light/cubio/idle0032.png
  38. 二进制
      demos/2d/isometric_light/cubio/idle0033.png
  39. 二进制
      demos/2d/isometric_light/cubio/idle0034.png
  40. 二进制
      demos/2d/isometric_light/cubio/idle0035.png
  41. 二进制
      demos/2d/isometric_light/cubio/idle0036.png
  42. 二进制
      demos/2d/isometric_light/cubio/idle0037.png
  43. 二进制
      demos/2d/isometric_light/cubio/idle0038.png
  44. 二进制
      demos/2d/isometric_light/cubio/idle0039.png
  45. 二进制
      demos/2d/isometric_light/cubio/idle0040.png
  46. 二进制
      demos/2d/isometric_light/cubio/idle0041.png
  47. 二进制
      demos/2d/isometric_light/cubio/idle0042.png
  48. 二进制
      demos/2d/isometric_light/cubio/idle0043.png
  49. 二进制
      demos/2d/isometric_light/cubio/idle0044.png
  50. 二进制
      demos/2d/isometric_light/cubio/idle0045.png
  51. 二进制
      demos/2d/isometric_light/cubio/idle0046.png
  52. 二进制
      demos/2d/isometric_light/cubio/idle0047.png
  53. 二进制
      demos/2d/isometric_light/cubio/idle0048.png
  54. 二进制
      demos/2d/isometric_light/cubio/idle0049.png
  55. 二进制
      demos/2d/isometric_light/cubio/idle0050.png
  56. 二进制
      demos/2d/isometric_light/cubio/idle0051.png
  57. 二进制
      demos/2d/isometric_light/cubio/idle0052.png
  58. 二进制
      demos/2d/isometric_light/cubio/idle0053.png
  59. 二进制
      demos/2d/isometric_light/cubio/idle0054.png
  60. 二进制
      demos/2d/isometric_light/cubio/idle0055.png
  61. 二进制
      demos/2d/isometric_light/cubio/idle0056.png
  62. 二进制
      demos/2d/isometric_light/cubio/idle0057.png
  63. 二进制
      demos/2d/isometric_light/cubio/idle0058.png
  64. 二进制
      demos/2d/isometric_light/cubio/idle0059.png
  65. 二进制
      demos/2d/isometric_light/cubio/idle0060.png
  66. 二进制
      demos/2d/isometric_light/cubio/norm-b-0001.png
  67. 二进制
      demos/2d/isometric_light/cubio/norm-b-0002.png
  68. 二进制
      demos/2d/isometric_light/cubio/norm-b-0003.png
  69. 二进制
      demos/2d/isometric_light/cubio/norm-b-0004.png
  70. 二进制
      demos/2d/isometric_light/cubio/norm-b-0005.png
  71. 二进制
      demos/2d/isometric_light/cubio/norm-b-0006.png
  72. 二进制
      demos/2d/isometric_light/cubio/norm-b-0007.png
  73. 二进制
      demos/2d/isometric_light/cubio/norm-b-0008.png
  74. 二进制
      demos/2d/isometric_light/cubio/norm-b-0009.png
  75. 二进制
      demos/2d/isometric_light/cubio/norm-b-0010.png
  76. 二进制
      demos/2d/isometric_light/cubio/norm-b-0011.png
  77. 二进制
      demos/2d/isometric_light/cubio/norm-b-0012.png
  78. 二进制
      demos/2d/isometric_light/cubio/norm-b-0013.png
  79. 二进制
      demos/2d/isometric_light/cubio/norm-b-0014.png
  80. 二进制
      demos/2d/isometric_light/cubio/norm-b-0015.png
  81. 二进制
      demos/2d/isometric_light/cubio/norm-b-0016.png
  82. 二进制
      demos/2d/isometric_light/cubio/norm-b-0017.png
  83. 二进制
      demos/2d/isometric_light/cubio/norm-b-0018.png
  84. 二进制
      demos/2d/isometric_light/cubio/norm-b-0019.png
  85. 二进制
      demos/2d/isometric_light/cubio/norm-b-0020.png
  86. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0001.png
  87. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0002.png
  88. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0003.png
  89. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0004.png
  90. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0005.png
  91. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0006.png
  92. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0007.png
  93. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0008.png
  94. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0009.png
  95. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0010.png
  96. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0011.png
  97. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0012.png
  98. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0013.png
  99. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0014.png
  100. 二进制
      demos/2d/isometric_light/cubio/norm-bl-0015.png

+ 4 - 0
LICENSE.md

@@ -21,3 +21,7 @@
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                
+
+
+**********************************************************************
+

二进制
demos/2d/isometric_light/character_shder.res


二进制
demos/2d/isometric_light/column.scn


+ 96 - 0
demos/2d/isometric_light/cubio.gd

@@ -0,0 +1,96 @@
+
+extends KinematicBody2D
+
+# member variables here, example:
+# var a=2
+# var b="textvar"
+
+const MAX_SPEED = 300.0
+const IDLE_SPEED = 10.0
+const ACCEL=5.0
+const VSCALE=0.5
+const SHOOT_INTERVAL=0.3
+
+var speed=Vector2()
+var current_anim=""
+var current_mirror=false
+
+var shoot_countdown=0
+
+func _input(ev):
+	if (ev.type==InputEvent.MOUSE_BUTTON and ev.button_index==1 and ev.pressed and shoot_countdown<=0):
+		var pos = get_canvas_transform().affine_inverse() * ev.pos
+		var dir = (pos-get_global_pos()).normalized()
+		var bullet = preload("res://shoot.scn").instance()
+		bullet.advance_dir=dir
+		bullet.set_pos( get_global_pos() + dir * 60 )
+		get_parent().add_child(bullet)
+		shoot_countdown=SHOOT_INTERVAL
+		
+		
+		
+
+func _fixed_process(delta):
+	
+	shoot_countdown-=delta
+	var dir = Vector2()
+	if (Input.is_action_pressed("up")):
+		dir+=Vector2(0,-1)
+	if (Input.is_action_pressed("down")):
+		dir+=Vector2(0,1)
+	if (Input.is_action_pressed("left")):
+		dir+=Vector2(-1,0)
+	if (Input.is_action_pressed("right")):
+		dir+=Vector2(1,0)
+		
+	if (dir!=Vector2()):
+		dir=dir.normalized()
+	speed = speed.linear_interpolate(dir*MAX_SPEED,delta*ACCEL)
+	var motion = speed * delta
+	motion.y*=VSCALE
+	motion=move(motion)
+	
+	if (is_colliding()):
+		var n = get_collision_normal()
+		motion=n.slide(motion)
+		move(motion)
+
+	var next_anim=""
+	var next_mirror=false
+	
+	if (dir==Vector2() and speed.length()<IDLE_SPEED):
+		next_anim="idle"
+		next_mirror=false
+	elif (speed.length()>IDLE_SPEED*0.1):
+		var angle = atan2(abs(speed.x),speed.y)	
+		
+		next_mirror = speed.x>0
+		if (angle<PI/8):
+			next_anim="bottom"
+			next_mirror=false
+		elif (angle<PI/4+PI/8):
+			next_anim="bottom_left"
+		elif (angle<PI*2/4+PI/8):
+			next_anim="left"
+		elif (angle<PI*3/4+PI/8):
+			next_anim="top_left"
+		else:
+			next_anim="top"
+			next_mirror=false
+		
+			
+	if (next_anim!=current_anim or next_mirror!=current_mirror):
+		get_node("frames").set_flip_h(next_mirror)
+		get_node("anim").play(next_anim)
+		current_anim=next_anim
+		current_mirror=next_mirror
+		
+
+
+func _ready():
+	# Initialization here
+	set_fixed_process(true)
+	set_process_input(true)
+	pass
+
+

二进制
demos/2d/isometric_light/cubio.scn


二进制
demos/2d/isometric_light/cubio/idle0001.png


二进制
demos/2d/isometric_light/cubio/idle0002.png


二进制
demos/2d/isometric_light/cubio/idle0003.png


二进制
demos/2d/isometric_light/cubio/idle0004.png


二进制
demos/2d/isometric_light/cubio/idle0005.png


二进制
demos/2d/isometric_light/cubio/idle0006.png


二进制
demos/2d/isometric_light/cubio/idle0007.png


二进制
demos/2d/isometric_light/cubio/idle0008.png


二进制
demos/2d/isometric_light/cubio/idle0009.png


二进制
demos/2d/isometric_light/cubio/idle0010.png


二进制
demos/2d/isometric_light/cubio/idle0011.png


二进制
demos/2d/isometric_light/cubio/idle0012.png


二进制
demos/2d/isometric_light/cubio/idle0013.png


二进制
demos/2d/isometric_light/cubio/idle0014.png


二进制
demos/2d/isometric_light/cubio/idle0015.png


二进制
demos/2d/isometric_light/cubio/idle0016.png


二进制
demos/2d/isometric_light/cubio/idle0017.png


二进制
demos/2d/isometric_light/cubio/idle0018.png


二进制
demos/2d/isometric_light/cubio/idle0019.png


二进制
demos/2d/isometric_light/cubio/idle0020.png


二进制
demos/2d/isometric_light/cubio/idle0021.png


二进制
demos/2d/isometric_light/cubio/idle0022.png


二进制
demos/2d/isometric_light/cubio/idle0023.png


二进制
demos/2d/isometric_light/cubio/idle0024.png


二进制
demos/2d/isometric_light/cubio/idle0025.png


二进制
demos/2d/isometric_light/cubio/idle0026.png


二进制
demos/2d/isometric_light/cubio/idle0027.png


二进制
demos/2d/isometric_light/cubio/idle0028.png


二进制
demos/2d/isometric_light/cubio/idle0029.png


二进制
demos/2d/isometric_light/cubio/idle0030.png


二进制
demos/2d/isometric_light/cubio/idle0031.png


二进制
demos/2d/isometric_light/cubio/idle0032.png


二进制
demos/2d/isometric_light/cubio/idle0033.png


二进制
demos/2d/isometric_light/cubio/idle0034.png


二进制
demos/2d/isometric_light/cubio/idle0035.png


二进制
demos/2d/isometric_light/cubio/idle0036.png


二进制
demos/2d/isometric_light/cubio/idle0037.png


二进制
demos/2d/isometric_light/cubio/idle0038.png


二进制
demos/2d/isometric_light/cubio/idle0039.png


二进制
demos/2d/isometric_light/cubio/idle0040.png


二进制
demos/2d/isometric_light/cubio/idle0041.png


二进制
demos/2d/isometric_light/cubio/idle0042.png


二进制
demos/2d/isometric_light/cubio/idle0043.png


二进制
demos/2d/isometric_light/cubio/idle0044.png


二进制
demos/2d/isometric_light/cubio/idle0045.png


二进制
demos/2d/isometric_light/cubio/idle0046.png


二进制
demos/2d/isometric_light/cubio/idle0047.png


二进制
demos/2d/isometric_light/cubio/idle0048.png


二进制
demos/2d/isometric_light/cubio/idle0049.png


二进制
demos/2d/isometric_light/cubio/idle0050.png


二进制
demos/2d/isometric_light/cubio/idle0051.png


二进制
demos/2d/isometric_light/cubio/idle0052.png


二进制
demos/2d/isometric_light/cubio/idle0053.png


二进制
demos/2d/isometric_light/cubio/idle0054.png


二进制
demos/2d/isometric_light/cubio/idle0055.png


二进制
demos/2d/isometric_light/cubio/idle0056.png


二进制
demos/2d/isometric_light/cubio/idle0057.png


二进制
demos/2d/isometric_light/cubio/idle0058.png


二进制
demos/2d/isometric_light/cubio/idle0059.png


二进制
demos/2d/isometric_light/cubio/idle0060.png


二进制
demos/2d/isometric_light/cubio/norm-b-0001.png


二进制
demos/2d/isometric_light/cubio/norm-b-0002.png


二进制
demos/2d/isometric_light/cubio/norm-b-0003.png


二进制
demos/2d/isometric_light/cubio/norm-b-0004.png


二进制
demos/2d/isometric_light/cubio/norm-b-0005.png


二进制
demos/2d/isometric_light/cubio/norm-b-0006.png


二进制
demos/2d/isometric_light/cubio/norm-b-0007.png


二进制
demos/2d/isometric_light/cubio/norm-b-0008.png


二进制
demos/2d/isometric_light/cubio/norm-b-0009.png


二进制
demos/2d/isometric_light/cubio/norm-b-0010.png


二进制
demos/2d/isometric_light/cubio/norm-b-0011.png


二进制
demos/2d/isometric_light/cubio/norm-b-0012.png


二进制
demos/2d/isometric_light/cubio/norm-b-0013.png


二进制
demos/2d/isometric_light/cubio/norm-b-0014.png


二进制
demos/2d/isometric_light/cubio/norm-b-0015.png


二进制
demos/2d/isometric_light/cubio/norm-b-0016.png


二进制
demos/2d/isometric_light/cubio/norm-b-0017.png


二进制
demos/2d/isometric_light/cubio/norm-b-0018.png


二进制
demos/2d/isometric_light/cubio/norm-b-0019.png


二进制
demos/2d/isometric_light/cubio/norm-b-0020.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0001.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0002.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0003.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0004.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0005.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0006.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0007.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0008.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0009.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0010.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0011.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0012.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0013.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0014.png


二进制
demos/2d/isometric_light/cubio/norm-bl-0015.png


部分文件因为文件数量过多而无法显示