Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
extends KinematicBody export var anim_col = 0 export var speed = 7 export var gravity = 20 const ACCEL_DEFAULT = 7 const ACCEL_AIR = 1 onready var accel = ACCEL_DEFAULT var direction = Vector3() var velocity = Vector3() var gravity_vec = Vector3() var movement = Vector3() var snap var jump = 10 onready var sprite = $Sprite3D onready var ani_player = $AnimationPlayer var camera = null func _ready(): add_to_group("Imps") ani_player.play("anim_col") func _physics_process(delta): follow_camera() jump(delta) move(delta) func set_camera(c): camera = c func follow_camera(): if camera == null: return var p_fwd = -camera.global_transform.basis.z var fwd = global_transform.basis.z var left = global_transform.basis.x var l_dot = left.dot(p_fwd) var f_dot = fwd.dot(p_fwd) var row = 0 sprite.flip_h = false if f_dot < -8.5: row = 0 # front sprite elif f_dot > 8.5: row = 4 # back sprite else: sprite.flip_h = l_dot > 0 if abs(f_dot) < 0.3: row = 2 # left sprite elif f_dot < 0: row = 1 # forward left sprite else: row = 3 # back left sprite sprite.frame = anim_col + row * 4 func jump(delta): #jumping and gravity if is_on_floor(): snap = -get_floor_normal() accel = ACCEL_DEFAULT gravity_vec = Vector3.ZERO else: snap = Vector3.DOWN accel = ACCEL_AIR gravity_vec += Vector3.DOWN * gravity * delta #if Input.is_action_just_pressed("jump") and is_on_floor(): # snap = Vector3.ZERO # gravity_vec = Vector3.UP * jump func move(delta): #make it move velocity = velocity.linear_interpolate(direction * speed, accel * delta) movement = velocity + gravity_vec move_and_slide_with_snap(movement, snap, Vector3.UP)
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)