知识点:将获取到的物体设置成主角的子物体 以实现任意移动目标物,bool控制拾取放下(限制目标物x轴z轴防止其旋转 位置不正/也可为目标设置刚体重力让它自行调整位置)
using UnityEngine;
using System.Collections;
/// <summary>
/// 射线拾取物体
/// </summary>
public class RayCarry : MonoBehaviour
{
private Ray ray;
private RaycastHit hit;
public LayerMask layer;
public Transform carryParent;//拾取到物体的父物体
private Transform carryObj;//拾取到的物体
private bool flag = false;
private void Update()
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (!flag)
{
if (Physics.Raycast(ray, out hit, 10, layer.value)
&& Input.GetMouseButtonDown(0))
{
flag = true;
carryObj = hit.transform;
carryObj.parent = carryParent;
carryObj.localPosition = Vector3.zero;
carryObj.localEulerAngles = Vector3.zero;
}
}
else
{
if (Input.GetMouseButtonDown(0))
{
flag = false;
//取消父子关系
carryObj.parent = null;
carryObj.eulerAngles = new Vector3(0, carryObj.eulerAngles.y, 0);
}
}
}
}