Study088

unity中让摄像机移动到鼠标点击的位置和鼠标控制平移视角

private Vector3 targetVector3;
private float movespeed=0.5f;
private bool IsOver = true;
private GameObject player;
private Camera firstCamera;
float sensitivityX = 2f;
public void Start (GameObject _player,Camera cam)
{
player = _player;
firstCamera = cam;
}

public void Update () {
if (Input.GetMouseButton(0))
{
if (firstCamera == null)
return;
//视角移动
firstCamera.transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
//1. 获取鼠标点击位置
//创建射线;从摄像机发射一条经过鼠标当前位置的射线
Ray ray = firstCamera.ScreenPointToRay(Input.mousePosition);
//发射射线
RaycastHit hitInfo = new RaycastHit();
if (Physics.Raycast(ray, out hitInfo))
{
//获取碰撞点的位置
if (hitInfo.collider.name == "Ground")
{
Debug.LogError(hitInfo.collider.name);
targetVector3 = hitInfo.point;
targetVector3.y = -0.5f;
IsOver = false;
}
Debug.DrawLine(ray.origin, hitInfo.point, Color.red);
}
//2. 让角色移动到目标位置
MoveTo(targetVector3);
}
}
//让角色移动到目标位置
private void MoveTo(Vector3 tar)
{
if (!IsOver)
{
Vector3 offSet = tar - player.transform.position;
player.transform.position += offSet.normalized * movespeed * Time.deltaTime;
if (Vector3.Distance(tar, player.transform.position) < 0.5f)
{
IsOver = true;
player.transform.position = tar;
}
}

}

分类:

技术点:

相关文章:

  • 2021-09-18
  • 2021-12-10
  • 2021-05-10
  • 2021-11-08
  • 2021-12-18
  • 2021-11-05
  • 2021-12-03
  • 2021-11-15
猜你喜欢
  • 2021-11-04
  • 2021-11-04
  • 2021-09-10
  • 2022-01-20
  • 2021-10-01
  • 2021-11-05
  • 2021-12-05
相关资源
相似解决方案