public class PlayerController : MonoBehaviour { public float m_Speed = 10; public float m_RotationSpeed = 10; private Vector3 m_TargetPos = Vector3.zero; private Quaternion m_TargetQuaternion; private CharacterController m_CharacterController; private void Start() { m_CharacterController = GetComponent<CharacterController>(); } private void Update() { if (Input.GetMouseButton(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitinfo; if (Physics.Raycast(ray, out hitinfo)) { if (hitinfo.transform.CompareTag("Ground")) { m_TargetPos = hitinfo.point; m_RotationSpeed = 0; } } } if (!m_CharacterController.isGrounded) { m_CharacterController.Move(transform.position + new Vector3(0, -1000, 0) - transform.position); } if (m_TargetPos != Vector3.zero) { if (Vector3.Distance(m_TargetPos, transform.position) > 0.1f) { Vector3 direction = (m_TargetPos - transform.position).normalized; direction *= Time.deltaTime * m_Speed; direction.y = 0; if (m_RotationSpeed <= 1) { m_RotationSpeed += 5f * Time.deltaTime; m_TargetQuaternion = Quaternion.LookRotation(direction); transform.rotation = Quaternion.Lerp(transform.rotation, m_TargetQuaternion, m_RotationSpeed); } m_CharacterController.Move(direction); } } } }
static class StringUtil //对String类添加扩展方法 { public static int toInt(this string s) { return 12; } }