鼠标点击后,获取鼠标点击到的屏幕位置,
通过射线点击获取到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();
}
}
原文地址:https://blog.csdn.net/qq_22975451/article/details/113259580
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。