using System; using UnityEngine; using UnityEngine.Events; public class PlayerMovePhysics : MonoBehaviour { public float speed = 5; public bool worldDirection = true; public bool rotatePlayer = true; public Action spaceAction; public Action enterAction; Rigidbody rb; void Start() { rb = GetComponent(); } private void OnEnable() { transform.position += new Vector3(10, 0, 0); } void FixedUpdate() { Vector3 input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); //input = Vector3.forward; if (input.magnitude > 0) { Vector3 fwd = worldDirection ? Vector3.forward : transform.position - Camera.main.transform.position; fwd.y = 0; fwd = fwd.normalized; if (fwd.magnitude > 0.001f) { Quaternion inputFrame = Quaternion.LookRotation(fwd, Vector3.up); input = inputFrame * input; if (input.magnitude > 0.001f) { rb.AddForce(speed * input); if (rotatePlayer) transform.rotation = Quaternion.LookRotation(input.normalized, Vector3.up); } } } if (Input.GetKeyDown(KeyCode.Space) && spaceAction != null) spaceAction(); if (Input.GetKeyDown(KeyCode.Return) && enterAction != null) enterAction(); } }