Unity 物体位置跟随鼠标位置移动
程序员文章站
2022-04-03 12:29:39
...
鼠标点击后,获取鼠标点击到的屏幕位置,
通过射线点击获取到3D空间中射线点击到的位置pos,
Ray ray = Camera.main.ScreenPointToRay(mousePos);
实时的将物体A位置移动到点pos。
注意:保证场景内有带碰撞的背景
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//物体位置跟随鼠标移动
public class MoveToMousePos : MonoBehaviour {
public Transform obj;
public Vector3 targetPos;
public float speed;
// Use this for initialization
void Start () {
//obj = this.transform;
targetPos = obj.position;
}
void MoveTo()
{
if (Input.GetMouseButtonDown(0))
{
//获取鼠标位置
Vector3 mousePos = Input.mousePosition;
//将屏幕位置转为射线
Ray ray = Camera.main.ScreenPointToRay(mousePos);
//用来记录射线碰撞记录
RaycastHit hitInfo;
//产生射线
bool isCast = Physics.Raycast(ray, out hitInfo);
if (isCast)
{
//记录碰撞位置
targetPos = hitInfo.point;
}
}
//朝目标方向移动位置
Vector3 pos = Vector3.MoveTowards(obj.position,targetPos,speed*Time.deltaTime);
//更新当前位置
obj.position = pos;
}
// Update is called once per frame
void Update ()
{
MoveTo();
}
}
下一篇: 获取位置信息