func stop():
self.set_physics_process(false)
$AnimationPlayer.stop()
func resume():
self.set_physics_process(true)
extends KinematicBody2D
const MOTION_SPEED = 100
func _physics_process(delta):
var motion = Vector2()
if (Input.is_action_pressed("ui_up")):
motion += Vector2(0, -1)
if (Input.is_action_pressed("ui_down")):
motion += Vector2(0, 1)
if (Input.is_action_pressed("ui_left")):
motion += Vector2(-1, 0)
if (Input.is_action_pressed("ui_right")):
motion += Vector2(1, 0)
motion = motion.normalized()*MOTION_SPEED
move_and_slide(motion)
extends Area2D
export (int) var SPEED = 100
var velocity = Vector2()
func _process(delta):
velocity = Vector2()
if Input.is_action_pressed("ui_right"):
velocity.x += 1
if Input.is_action_pressed("ui_left"):
velocity.x -= 1
if Input.is_action_pressed("ui_down"):
velocity.y += 1
if Input.is_action_pressed("ui_up"):
velocity.y -= 1
if velocity.length() > 0:
velocity = velocity.normalized() * SPEED
position += velocity * delta
extends RigidBody2D
var thrust = Vector2(0, -250)
var torque = 2500
func _integrate_forces(state):
if Input.is_action_pressed("ui_up"):
set_applied_force(thrust.rotated(rotation))
else:
set_applied_force(Vector2())
var rotation_dir = 0
if Input.is_action_pressed("ui_right"):
rotation_dir += 1
if Input.is_action_pressed("ui_left"):
rotation_dir -= 1
set_applied_torque(rotation_dir * torque)
extends KinematicBody
var gravity = -9.8
var velocity = Vector3()
const SPEED = 6
const ACCELERATION = 3
const DE_ACCELERATION = 5
func _physics_process(delta):
var dir = Vector3()
if( Input.is_action_pressed("ui_up")):
dir.z -= 1
if(Input.is_action_pressed("ui_down")):
dir.z += 1
if(Input.is_action_pressed("ui_left")):
dir.x -= 1
if(Input.is_action_pressed("ui_right")):
dir.x += 1
dir.y = 0
dir = dir.normalized()
velocity.y += delta * gravity
var hv = velocity
hv.y = 0
var new_pos = dir * SPEED
var accel = DE_ACCELERATION
if (dir.dot(hv) > 0):
accel = ACCELERATION
hv = hv.linear_interpolate(new_pos, accel * delta)
velocity.x = hv.x
velocity.z = hv.z
velocity = move_and_slide(velocity, Vector3(0,1,0))
# Jumping
if is_on_floor() and Input.is_key_pressed(KEY_SPACE):
velocity.y = 10
Characters move from center of tile to center of tile
var tile_size = 32
var can_move = true
var facing = 'ui_right'
var moves = {'ui_right': Vector2.RIGHT,
'ui_left': Vector2.LEFT,
'ui_up': Vector2.UP,
'ui_down': Vector2.DOWN}
var raycasts = {'ui_right': 'RayCastRight',
'ui_left': 'RayCastLeft',
'ui_up': 'RayCastUp',
'ui_down': 'RayCastDown'}
func move(dir):
if get_node(raycasts[facing]).is_colliding():
return
facing = dir
can_move = false
$AnimationPlayer.play(facing)
$MoveTween.interpolate_property(self, "position", position, position + moves[facing] * tile_size,
0.8, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
$MoveTween.start()
return true
func _on_MoveTween_tween_completed( object, key ):
can_move = true
func _process(delta):
if can_move:
for dir in moves.keys():
if Input.is_action_pressed(dir):
facing = dir
move(facing)
func _ready():
randomize()
facing = moves.keys()[randi() % 4]
func _process(delta):
if can_move:
if not move(facing) or randi() % 10 > 5:
facing = moves.keys()[randi() % 4]