Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends KinematicBody
- var animPlayer
- var moveSpeed = 10
- var targetPosition
- var isWalking
- func _ready():
- animPlayer = $AnimationPlayer
- pass
- #func _process(delta):
- # # Called every frame. Delta is time since last frame.
- # # Update game logic here.
- # pass
- func onEnterWalkState():
- animPlayer.play("walk")
- pass
- func onExitWalkState():
- animPlayer.stop(true)
- pass
- func walkUpdate(delta):
- pass
- func walkPhysics(delta):
- var playerPosition = self.global_transform.origin
- if playerPosition >= (targetPosition-Vector3(1,0,1)) and playerPosition <= (targetPosition+Vector3(1,0,1)):
- isWalking = false
- onExitWalkState()
- pass
- var direction = (targetPosition - playerPosition).normalized()
- var velocity = direction*moveSpeed*delta
- velocity.y = 0
- move_and_collide(velocity)
- pass
- func _physics_process(delta):
- if Input.is_action_just_pressed("left_click"):
- isWalking = true
- targetPosition = getTargetPositionByRayTrace()
- onEnterWalkState()
- if isWalking:
- walkPhysics(delta)
- pass
- pass
- func getTargetPositionByRayTrace():
- var rayLength = 1000
- var mousePos = get_viewport().get_mouse_position()
- var camera = get_viewport().get_camera()
- var from = camera.project_ray_origin(mousePos)
- var to = from + camera.project_ray_normal(mousePos) * rayLength
- var space_state = get_world().direct_space_state
- var result = space_state.intersect_ray(from, to, [self])
- print("Result: ", result.position, result.collider)
- return result.position
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement