2
0
Эх сурвалжийг харах

Created a new movements category

Moved some examples
Added move forward example
Björn Ritzl 3 жил өмнө
parent
commit
361288a7a6

+ 26 - 8
examples/_main/loader.go

@@ -29,9 +29,9 @@ components {
   }
 }
 embedded_components {
-  id: "basics/simple_move"
+  id: "movement/simple_move"
   type: "collectionproxy"
-  data: "collection: \"/examples/basics/simple_move/simple_move.collection\"\n"
+  data: "collection: \"/examples/movement/simple_move/simple_move.collection\"\n"
   "exclude: false\n"
   ""
   position {
@@ -83,9 +83,9 @@ embedded_components {
   }
 }
 embedded_components {
-  id: "basics/follow"
+  id: "movement/follow"
   type: "collectionproxy"
-  data: "collection: \"/examples/basics/follow/follow.collection\"\n"
+  data: "collection: \"/examples/movement/follow/follow.collection\"\n"
   "exclude: false\n"
   ""
   position {
@@ -677,9 +677,9 @@ embedded_components {
   }
 }
 embedded_components {
-  id: "basics/movement_speed"
+  id: "movement/movement_speed"
   type: "collectionproxy"
-  data: "collection: \"/examples/basics/movement_speed/movement_speed.collection\"\n"
+  data: "collection: \"/examples/movement/movement_speed/movement_speed.collection\"\n"
   "exclude: false\n"
   ""
   position {
@@ -839,9 +839,27 @@ embedded_components {
   }
 }
 embedded_components {
-  id: "basics/move_to"
+  id: "movement/move_to"
   type: "collectionproxy"
-  data: "collection: \"/examples/basics/move_to/move_to.collection\"\n"
+  data: "collection: \"/examples/movement/move_to/move_to.collection\"\n"
+  "exclude: false\n"
+  ""
+  position {
+    x: 0.0
+    y: 0.0
+    z: 0.0
+  }
+  rotation {
+    x: 0.0
+    y: 0.0
+    z: 0.0
+    w: 1.0
+  }
+}
+embedded_components {
+  id: "movement/move_forward"
+  type: "collectionproxy"
+  data: "collection: \"/examples/movement/move_forward/move_forward.collection\"\n"
   "exclude: false\n"
   ""
   position {

+ 2 - 1
examples/_main/menu.gui_script

@@ -101,7 +101,8 @@ end
 function init(self)
 	self.index = { "basics", "physics", "animation", "gui", "input", "particles", "sound", "render", "debug", "collection", "sprite", "file", "tilemap" }
 	self.index = {}
-	self.index["basics"] = { "simple_move", "message_passing", "follow", "move_to", "parent_child", "spawn", "z_order", "movement_speed" }
+	self.index["basics"] = { "message_passing", "parent_child", "spawn", "z_order" }
+	self.index["movement"] = { "simple_move", "follow", "move_to", "move_forward", "movement_speed" }
 	self.index["physics"] = { "dynamic", "kinematic", "raycast", "trigger", "hinge_joint", "pendulum"}
 	self.index["animation"] = { "spinner", "flipbook", "chained_tween", "basic_tween", "spine", "cursor" }
 	self.index["gui"] = { "button", "stencil", "load_texture", "pointer_over", "color", "slice9" }

+ 0 - 57
examples/basics/movement_speed/movement_speed.collection

@@ -1,57 +0,0 @@
-name: "movement_speed"
-scale_along_z: 0
-embedded_instances {
-  id: "go"
-  data: "components {\n"
-  "  id: \"movement_speed\"\n"
-  "  component: \"/examples/basics/movement_speed/movement_speed.script\"\n"
-  "  position {\n"
-  "    x: 0.0\n"
-  "    y: 0.0\n"
-  "    z: 0.0\n"
-  "  }\n"
-  "  rotation {\n"
-  "    x: 0.0\n"
-  "    y: 0.0\n"
-  "    z: 0.0\n"
-  "    w: 1.0\n"
-  "  }\n"
-  "}\n"
-  "embedded_components {\n"
-  "  id: \"sprite\"\n"
-  "  type: \"sprite\"\n"
-  "  data: \"tile_set: \\\"/assets/sprites.atlas\\\"\\n"
-  "default_animation: \\\"shipGreen_manned\\\"\\n"
-  "material: \\\"/builtins/materials/sprite.material\\\"\\n"
-  "blend_mode: BLEND_MODE_ALPHA\\n"
-  "\"\n"
-  "  position {\n"
-  "    x: 0.0\n"
-  "    y: 0.0\n"
-  "    z: 0.0\n"
-  "  }\n"
-  "  rotation {\n"
-  "    x: 0.0\n"
-  "    y: 0.0\n"
-  "    z: 0.0\n"
-  "    w: 1.0\n"
-  "  }\n"
-  "}\n"
-  ""
-  position {
-    x: 360.0
-    y: 360.0
-    z: 0.0
-  }
-  rotation {
-    x: 0.0
-    y: 0.0
-    z: 0.0
-    w: 1.0
-  }
-  scale3 {
-    x: 1.0
-    y: 1.0
-    z: 1.0
-  }
-}

+ 1 - 1
examples/basics/follow/follow.collection → examples/movement/follow/follow.collection

@@ -4,7 +4,7 @@ embedded_instances {
   id: "gameobject"
   data: "components {\n"
   "  id: \"script\"\n"
-  "  component: \"/examples/basics/follow/follow.script\"\n"
+  "  component: \"/examples/movement/follow/follow.script\"\n"
   "  position {\n"
   "    x: 0.0\n"
   "    y: 0.0\n"

+ 0 - 0
examples/basics/follow/follow.md → examples/movement/follow/follow.md


+ 0 - 0
examples/basics/follow/follow.png → examples/movement/follow/follow.png


+ 0 - 0
examples/basics/follow/follow.script → examples/movement/follow/follow.script


+ 131 - 0
examples/movement/move_forward/move_forward.collection

@@ -0,0 +1,131 @@
+name: "move_forward"
+scale_along_z: 0
+embedded_instances {
+  id: "go"
+  data: "components {\n"
+  "  id: \"move_forward\"\n"
+  "  component: \"/examples/movement/move_forward/move_forward.script\"\n"
+  "  position {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "  }\n"
+  "  rotation {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "    w: 1.0\n"
+  "  }\n"
+  "}\n"
+  "embedded_components {\n"
+  "  id: \"sprite\"\n"
+  "  type: \"sprite\"\n"
+  "  data: \"tile_set: \\\"/assets/sprites.atlas\\\"\\n"
+  "default_animation: \\\"flame\\\"\\n"
+  "material: \\\"/builtins/materials/sprite.material\\\"\\n"
+  "blend_mode: BLEND_MODE_ALPHA\\n"
+  "\"\n"
+  "  position {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "  }\n"
+  "  rotation {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "    w: 1.0\n"
+  "  }\n"
+  "}\n"
+  ""
+  position {
+    x: 350.0
+    y: 350.0
+    z: 0.0
+  }
+  rotation {
+    x: 0.0
+    y: 0.0
+    z: 0.0
+    w: 1.0
+  }
+  scale3 {
+    x: 1.0
+    y: 1.0
+    z: 1.0
+  }
+}
+embedded_instances {
+  id: "instructions"
+  data: "embedded_components {\n"
+  "  id: \"label\"\n"
+  "  type: \"label\"\n"
+  "  data: \"size {\\n"
+  "  x: 128.0\\n"
+  "  y: 32.0\\n"
+  "  z: 0.0\\n"
+  "  w: 0.0\\n"
+  "}\\n"
+  "scale {\\n"
+  "  x: 0.5\\n"
+  "  y: 0.5\\n"
+  "  z: 1.0\\n"
+  "  w: 0.0\\n"
+  "}\\n"
+  "color {\\n"
+  "  x: 0.0\\n"
+  "  y: 0.5647059\\n"
+  "  z: 0.99215686\\n"
+  "  w: 1.0\\n"
+  "}\\n"
+  "outline {\\n"
+  "  x: 1.0\\n"
+  "  y: 1.0\\n"
+  "  z: 1.0\\n"
+  "  w: 1.0\\n"
+  "}\\n"
+  "shadow {\\n"
+  "  x: 1.0\\n"
+  "  y: 1.0\\n"
+  "  z: 1.0\\n"
+  "  w: 1.0\\n"
+  "}\\n"
+  "leading: 1.0\\n"
+  "tracking: 0.0\\n"
+  "pivot: PIVOT_CENTER\\n"
+  "blend_mode: BLEND_MODE_ALPHA\\n"
+  "line_break: false\\n"
+  "text: \\\"Move with arrow keys (left+right = rotate, up = forward)\\\"\\n"
+  "font: \\\"/assets/text48.font\\\"\\n"
+  "material: \\\"/builtins/fonts/label.material\\\"\\n"
+  "\"\n"
+  "  position {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "  }\n"
+  "  rotation {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "    w: 1.0\n"
+  "  }\n"
+  "}\n"
+  ""
+  position {
+    x: 350.0
+    y: 38.0
+    z: 0.0
+  }
+  rotation {
+    x: 0.0
+    y: 0.0
+    z: 0.0
+    w: 1.0
+  }
+  scale3 {
+    x: 1.0
+    y: 1.0
+    z: 1.0
+  }
+}

+ 5 - 0
examples/movement/move_forward/move_forward.md

@@ -0,0 +1,5 @@
+---
+title: Move forward
+brief: This example shows how to move a game object in the direction it is rotated/facing.
+scripts: move_forward.script
+---

+ 64 - 0
examples/movement/move_forward/move_forward.script

@@ -0,0 +1,64 @@
+go.property("acceleration", 100)
+go.property("deceleration", 200)
+go.property("max_speed", 400)
+go.property("rotation_speed", 180)
+
+-- unit vector pointing up
+local UP = vmath.vector3(0, 1, 0)
+
+function init(self)
+	-- make sure the script will receive user input
+	msg.post(".", "acquire_input_focus")
+
+	-- movement input
+	self.input = vmath.vector3()
+
+	-- the current speed (pixels/second)
+	self.speed = 0
+end
+
+function update(self, dt)
+	-- accelerating?
+	if self.input.y > 0 then
+		-- increase speed
+		self.speed = self.speed + self.acceleration * dt
+		-- cap speed
+		self.speed = math.min(self.speed, self.max_speed)
+	else
+		-- decrease speed when not accelerating
+		self.speed = self.speed - self.deceleration * dt
+		self.speed = math.max(self.speed, 0)
+	end
+
+	-- apply rotation based on self.input.x (left/right)
+	local rot = go.get_rotation()
+	-- amount to rotate (in radians)
+	local rot_amount = math.rad(self.rotation_speed * self.input.x * dt)
+	-- apply rotation as a quaternion created from a rotation of 'rot_amount' degrees around the z-axis
+	rot = rot * vmath.quat_rotation_z(rot_amount)
+	go.set_rotation(rot)
+
+	-- move the game object
+	local p = go.get_position()
+	-- amount to move (pixels)
+	local move_amount = UP * self.speed * dt
+	-- apply rotation to movement vector to move game object in the direction of rotation
+	p = p + vmath.rotate(rot, move_amount)
+	go.set_position(p)
+
+	-- reset input
+	self.input = vmath.vector3()
+end
+
+function on_input(self, action_id, action)
+	-- update direction of movement based on currently pressed keys
+	if action_id == hash("up") then
+		self.input.y = 1
+	elseif action_id == hash("down") then
+		self.input.y = -1
+	elseif action_id == hash("left") then
+		self.input.x = 1
+	elseif action_id == hash("right") then
+		self.input.x = -1
+	end
+end

+ 1 - 1
examples/basics/move_to/move_to.collection → examples/movement/move_to/move_to.collection

@@ -4,7 +4,7 @@ embedded_instances {
   id: "go"
   data: "components {\n"
   "  id: \"move_to\"\n"
-  "  component: \"/examples/basics/move_to/move_to.script\"\n"
+  "  component: \"/examples/movement/move_to/move_to.script\"\n"
   "  position {\n"
   "    x: 0.0\n"
   "    y: 0.0\n"

+ 0 - 0
examples/basics/move_to/move_to.md → examples/movement/move_to/move_to.md


+ 0 - 0
examples/basics/move_to/move_to.png → examples/movement/move_to/move_to.png


+ 0 - 0
examples/basics/move_to/move_to.script → examples/movement/move_to/move_to.script


+ 131 - 0
examples/movement/movement_speed/movement_speed.collection

@@ -0,0 +1,131 @@
+name: "movement_speed"
+scale_along_z: 0
+embedded_instances {
+  id: "go"
+  data: "components {\n"
+  "  id: \"movement_speed\"\n"
+  "  component: \"/examples/movement/movement_speed/movement_speed.script\"\n"
+  "  position {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "  }\n"
+  "  rotation {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "    w: 1.0\n"
+  "  }\n"
+  "}\n"
+  "embedded_components {\n"
+  "  id: \"sprite\"\n"
+  "  type: \"sprite\"\n"
+  "  data: \"tile_set: \\\"/assets/sprites.atlas\\\"\\n"
+  "default_animation: \\\"shipGreen_manned\\\"\\n"
+  "material: \\\"/builtins/materials/sprite.material\\\"\\n"
+  "blend_mode: BLEND_MODE_ALPHA\\n"
+  "\"\n"
+  "  position {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "  }\n"
+  "  rotation {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "    w: 1.0\n"
+  "  }\n"
+  "}\n"
+  ""
+  position {
+    x: 360.0
+    y: 360.0
+    z: 0.0
+  }
+  rotation {
+    x: 0.0
+    y: 0.0
+    z: 0.0
+    w: 1.0
+  }
+  scale3 {
+    x: 1.0
+    y: 1.0
+    z: 1.0
+  }
+}
+embedded_instances {
+  id: "instructions"
+  data: "embedded_components {\n"
+  "  id: \"label\"\n"
+  "  type: \"label\"\n"
+  "  data: \"size {\\n"
+  "  x: 128.0\\n"
+  "  y: 32.0\\n"
+  "  z: 0.0\\n"
+  "  w: 0.0\\n"
+  "}\\n"
+  "scale {\\n"
+  "  x: 0.5\\n"
+  "  y: 0.5\\n"
+  "  z: 1.0\\n"
+  "  w: 0.0\\n"
+  "}\\n"
+  "color {\\n"
+  "  x: 0.0\\n"
+  "  y: 0.5647059\\n"
+  "  z: 0.99215686\\n"
+  "  w: 1.0\\n"
+  "}\\n"
+  "outline {\\n"
+  "  x: 1.0\\n"
+  "  y: 1.0\\n"
+  "  z: 1.0\\n"
+  "  w: 1.0\\n"
+  "}\\n"
+  "shadow {\\n"
+  "  x: 1.0\\n"
+  "  y: 1.0\\n"
+  "  z: 1.0\\n"
+  "  w: 1.0\\n"
+  "}\\n"
+  "leading: 1.0\\n"
+  "tracking: 0.0\\n"
+  "pivot: PIVOT_CENTER\\n"
+  "blend_mode: BLEND_MODE_ALPHA\\n"
+  "line_break: false\\n"
+  "text: \\\"Move with arrow keys\\\"\\n"
+  "font: \\\"/assets/text48.font\\\"\\n"
+  "material: \\\"/builtins/fonts/label.material\\\"\\n"
+  "\"\n"
+  "  position {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "  }\n"
+  "  rotation {\n"
+  "    x: 0.0\n"
+  "    y: 0.0\n"
+  "    z: 0.0\n"
+  "    w: 1.0\n"
+  "  }\n"
+  "}\n"
+  ""
+  position {
+    x: 350.0
+    y: 38.0
+    z: 0.0
+  }
+  rotation {
+    x: 0.0
+    y: 0.0
+    z: 0.0
+    w: 1.0
+  }
+  scale3 {
+    x: 1.0
+    y: 1.0
+    z: 1.0
+  }
+}

+ 0 - 0
examples/basics/movement_speed/movement_speed.md → examples/movement/movement_speed/movement_speed.md


+ 0 - 0
examples/basics/movement_speed/movement_speed.script → examples/movement/movement_speed/movement_speed.script


+ 1 - 1
examples/basics/simple_move/simple_move.collection → examples/movement/simple_move/simple_move.collection

@@ -4,7 +4,7 @@ embedded_instances {
   id: "gameobject"
   data: "components {\n"
   "  id: \"script\"\n"
-  "  component: \"/examples/basics/simple_move/simple_move.script\"\n"
+  "  component: \"/examples/movement/simple_move/simple_move.script\"\n"
   "  position {\n"
   "    x: 0.0\n"
   "    y: 0.0\n"

+ 0 - 0
examples/basics/simple_move/simple_move.md → examples/movement/simple_move/simple_move.md


+ 0 - 0
examples/basics/simple_move/simple_move.png → examples/movement/simple_move/simple_move.png


+ 0 - 0
examples/basics/simple_move/simple_move.script → examples/movement/simple_move/simple_move.script


+ 1 - 1
game.project

@@ -4,7 +4,7 @@ version = 0.1
 dependencies#0 = https://github.com/defold/extension-spine/archive/refs/tags/1.1.1.zip
 
 [bootstrap]
-main_collection = /examples/main.collectionc
+main_collection = /examples/movement/move_forward/move_forward.collectionc
 
 [input]
 game_binding = /input/game.input_bindingc