diff options
| author | Anson Bridges <bridges.anson@gmail.com> | 2022-09-07 14:07:30 -0400 |
|---|---|---|
| committer | Anson Bridges <bridges.anson@gmail.com> | 2022-09-07 14:07:30 -0400 |
| commit | c232b92e2dde1277324d1f89d0e75ae641e4ac3b (patch) | |
| tree | e11a5dd52f259c1cc7345baa40b372b304417f00 /godot/scripts/ballistics | |
| parent | a0967ebe815cd229b69fb9578f2288b95b2ddb28 (diff) | |
reorganized, ladders, vehicle control
Diffstat (limited to 'godot/scripts/ballistics')
| -rw-r--r-- | godot/scripts/ballistics/Cannonball.gd | 17 | ||||
| -rw-r--r-- | godot/scripts/ballistics/NetworkedProjectile.gd | 29 |
2 files changed, 46 insertions, 0 deletions
diff --git a/godot/scripts/ballistics/Cannonball.gd b/godot/scripts/ballistics/Cannonball.gd new file mode 100644 index 0000000..14de00c --- /dev/null +++ b/godot/scripts/ballistics/Cannonball.gd @@ -0,0 +1,17 @@ +extends "res://scripts/ballistics/NetworkedProjectile.gd" + +export var drag_constant = 0.3 +var damage_exceptions = [] +var oldvel + +func _physics_process(_delta): + oldvel = linear_velocity + add_force(-1*linear_velocity*drag_constant, Vector3.ZERO) + +func get_init_info(): + return {"linear_velocity" : linear_velocity, "angular_velocity" : angular_velocity, "oldvel" : oldvel, "shooter" : shooter, "shooter_id" : shooter_id} + +func _on_collision(body): + if oldvel.length() > 20 and !damage_exceptions.has(body) and body.has_method("damage"): + body.rpc("damage", oldvel.length(), "blunt", shooter, "using 'cannon'") + damage_exceptions.append(body) diff --git a/godot/scripts/ballistics/NetworkedProjectile.gd b/godot/scripts/ballistics/NetworkedProjectile.gd new file mode 100644 index 0000000..9703fa5 --- /dev/null +++ b/godot/scripts/ballistics/NetworkedProjectile.gd @@ -0,0 +1,29 @@ +extends RigidBody + +var shooter = "WORLD" +var shooter_id = 1 + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func mp_init(init_info): + for variable in init_info.keys(): + set(variable, init_info[variable]) + +remote func update_phys_transform(t, lv, av): + transform = t + linear_velocity = lv + angular_velocity = av + +func _integrate_forces(_state): + if is_network_master(): + rpc("update_phys_transform", transform, linear_velocity, angular_velocity) + +remotesync func net_remove(): + queue_free() + +func net_master_remove(): + if is_network_master(): + rpc("net_remove") |
