
本文共 5483 字,大约阅读时间需要 18 分钟。
2D���������������������������������������
���������������������������������������������2D������������������������������������������������������������������������������������������������������������������������������������������������������
������������
������������������������2D������������������������������������������������������������������������������������������������������������Unity���CharacterMovement���������������������������������������������������������������������������������������������������������������������������������������������������������
������������
using System.Collections;using System.Collections.Generic;using UnityEngine;public class RotateArrowToward : MonoBehaviour{ public float speed = 5f; private Vector2 mousePosition; private void Update() { // ��������������������������������� Vector2 mouseScreenPosition = Input.mousePosition; // ��������������������������������������������������� Vector2 mouseWorldPosition = Camera.main.ScreenToWorldPoint(mouseScreenPosition); // ��������������� Vector2 direction = mouseWorldPosition - transform.position; float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; Quaternion rotation = Quaternion.AngleAxis(angle, Vector3.forward); // ��������������������������� transform.rotation = Quaternion.Slerp(transform.rotation, rotation, speed * Time.deltaTime); }}
���������������
- ���������������������
Input.mousePosition
������������������������������������������������������������ - ������������������
Camera.main.ScreenToWorldPoint
������������������������������������������������������������������������������������������������������������������ - ������������������������������������������������������������������������������������
- ���������������������������
Mathf.Atan2
���������������������������������Y������X������������������������������������������������������������ - ���������������������������
Quaternion.Slerp
������������������������������������������������������
������������
Inspector
���������������������������������Sprite
���������Transform Components > Anchor
������Pivot������������������������������������������������������������������������������������speed
���������������������������������������������������
- ���������������������������������Pivot���������������������������������������������������������������������������
- ���������������������������
speed
��������������������������������������������� - ���������������������������
Pivot
���������������������������������������������������������
������������������������������������������2D���������������������������������������������������������������������������������������
3D���������������������������
���3D���������������������������������������������������������������������������������������������������������������������������������������������������������
������������
using System.Collections;using System.Collections.Generic;using UnityEngine;public class CharacterMovement : MonoBehaviour{ public float speed = 4; Rigidbody rigidBody; Vector3 lookPos; private void Start() { rigidBody = GetComponent(); if (rigidBody) { rigidBody.enabled = true; } } private void Update() { // ��������������������������� Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; // ������������������������������������������ if (Physics.Raycast(ray, out hit, 100)) { lookPos = hit.point; } // ��������������������������������� Vector3 lookDir = lookPos - transform.position; lookDir.y = 0; // ��������������������������������������������������� // ��������������������������� transform.LookAt(transform.position + lookDir, Vector3.up); } private void FixedUpdate() { float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(horizontal, 0, vertical); rigidBody.AddForce(movement * speed / Time.deltaTime); }}
������������
- ������������������������
CharacterMovement
��������������������������������� - ������������������������������������Rigidbody������������������������������
- ���������������������
ScreenPointToRay
������������������������3D��������� - ������������������������������������������������������������������������������hit������
- ������������������������������������������������������Y���������������������������������������
- ������������������������������������������������������������������������������������������������������������
������������
CharacterMovement
���������������������������������speed
������������������������������������������������������������������������3D���������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
