M2.5: wildlife, wolves, hunting, fishing and sleeping on the server
This commit is contained in:
@@ -51,7 +51,7 @@ func step(dt: float) -> void:
|
||||
velocity.y -= gravity * dt
|
||||
var to := from + velocity * dt
|
||||
var ex: Array[RID] = []
|
||||
if shooter != null:
|
||||
if shooter != null and is_instance_valid(shooter) and shooter.has_method("get_rid"):
|
||||
ex.append(shooter.get_rid())
|
||||
var q := PhysicsRayQueryParameters3D.create(from, to, 1 | 8, ex)
|
||||
var hit := get_world_3d().direct_space_state.intersect_ray(q)
|
||||
@@ -66,6 +66,9 @@ func step(dt: float) -> void:
|
||||
func _on_hit(hit: Dictionary) -> void:
|
||||
var c: Object = hit.collider
|
||||
var dir := velocity.normalized()
|
||||
if visual:
|
||||
queue_free()
|
||||
return
|
||||
if c != null and (c as Node).is_in_group("creature"):
|
||||
var k := clampf(velocity.length() / _start_speed, 0.4, 1.0)
|
||||
Actions.projectile_hit(shooter, c, damage * k, global_position, item_id if item_id == "arrow" else "")
|
||||
@@ -83,5 +86,11 @@ func _on_hit(hit: Dictionary) -> void:
|
||||
_drop(Transform3D(b, at))
|
||||
|
||||
func _drop(xf: Transform3D) -> void:
|
||||
world.drop_item(item_id, 1, xf)
|
||||
if not visual:
|
||||
world.drop_item(item_id, 1, xf)
|
||||
queue_free()
|
||||
|
||||
## Online, our game shows the server's arrows and spears in flight
|
||||
## (creature_net.gd). They hit nothing: the server's copy does that, and
|
||||
## anything that lands comes from the server as a dropped item.
|
||||
var visual := false
|
||||
|
||||
Reference in New Issue
Block a user