"鼠标右键按住时移动鼠标,角色会随着移动而改变方向。 鼠标左键按住角色会朝着此时的方向移动。"
时间: 2023-07-21 09:08:08 浏览: 81
好的,下面是一段基于Unity的代码,可以实现您所需的功能:
```csharp
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Vector3 lastMousePosition;
private Camera mainCamera;
private Rigidbody rb;
private float moveSpeed = 5f;
void Start()
{
mainCamera = Camera.main;
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetMouseButtonDown(1))
{
lastMousePosition = Input.mousePosition;
}
else if (Input.GetMouseButton(1))
{
Vector3 delta = Input.mousePosition - lastMousePosition;
lastMousePosition = Input.mousePosition;
float rotationX = delta.x * 0.5f;
transform.Rotate(new Vector3(0, rotationX, 0));
}
else if (Input.GetMouseButton(0))
{
Vector3 mousePosition = Input.mousePosition;
Ray ray = mainCamera.ScreenPointToRay(mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Vector3 direction = hit.point - transform.position;
direction.y = 0;
direction.Normalize();
rb.velocity = direction * moveSpeed;
transform.forward = direction;
}
}
else if (Input.GetMouseButtonUp(0))
{
rb.velocity = Vector3.zero;
}
}
}
```
这段代码实现了:
- 当鼠标右键按下时,记录当前鼠标位置;
- 当鼠标右键按住并移动时,计算鼠标位置偏移量并旋转角色;
- 当鼠标左键按住时,发射一条射线检测鼠标位置,计算角色需要移动的方向并朝着该方向移动,并面向该方向;
- 当鼠标左键松开时,停止角色移动。
需要注意的是,这段代码还需要挂载到角色的GameObject上,并且需要添加一个Rigidbody组件。
阅读全文