Godot Version
4.3
Question
Hey all!
I am trying to make a multiplayer game where the player controls his character completely with his mouse. I am kinda working for a sumo like mechanic right now where the player must dash his character to other player to push him. The problem I am facing is that I want the player that is getting hit move towards the direction the player who hits is facing at. I can’t seem to figure it out though. Here’s the script I got for the player:
extends CharacterBody3D
var mousepos:Vector2
var speed = 0.6
var g_hit = 0
var opface: Vector3
var pause = 0
var damage = 0
var facing: Vector3
func _ready():
if not is_multiplayer_authority(): return
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func _enter_tree():
set_multiplayer_authority(str(name).to_int())
func _input(event):
if not is_multiplayer_authority(): return
var direction = Vector3.ZERO
if event is InputEventMouseMotion:
if event.relative.x >= 200:
event.relative.x = 199
elif event.relative.x <= -200:
event.relative.x = -199
elif event.relative.y <= -200:
event.relative.y = -199
elif event.relative.y >= 200:
event.relative.y = 199
if pause > 0:
event.relative.y = 0
event.relative.x = 0
pause -= 1
velocity.x += event.relative.x
velocity.z += event.relative.y
var fast = (abs(velocity.x)+abs(velocity.z))/2
facing = transform.basis.z
move_and_slide()
rotation.y = lerp_angle(rotation.y, atan2(-velocity.x, -velocity.z), speed)
velocity *= 0
facing = transform.basis.z
for i in get_slide_collision_count():
var collision = get_slide_collision(i)
var push_player = collision.get_collider()
if fast >=7:
push_player.recieve_damage.rpc_id(push_player.get_multiplayer_authority())
#opface.x = 0
#opface.y = 0
#opface.z = 0
@rpc("any_peer")
func recieve_damage ():
damage += 1
g_hit = 7
opface = facing
func _physics_process(delta):
if not is_multiplayer_authority(): return
if g_hit > 0:
velocity = -opface*g_hit
g_hit-=1
move_and_slide()
I really appreciate your guys help!!