关于拾取、放下游戏物体,要先在游戏物体上加入标签tag,这里我统一将可以拾取的物体标志为pickedObject。然后对游戏添加rigidbody、collider组件,只有这三步都做到才可以拾取物体。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class pick : MonoBehaviour
{
private float smooth=10;
private float depth=0.5f;
Transform currentObject;
Vector3 mouse3DPosition;
//public Text lifeText;
//手机UI界面
public GameObject smartphoneUI;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (currentObject == null)
{
Ray rays = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.DrawRay(rays.origin, rays.direction * 100, Color.yellow);
RaycastHit hit;
if (Physics.Raycast(rays, out hit))
{//将创建的射线投射出去并将反馈信息存储到hit中
if (hit.collider.gameObject.tag == "pickedObject")
{
currentObject = hit.transform;
currentObject.gameObject.SetActive(false);
} //获取被射线碰到的对象transform变量
}
}
else
{
currentObject.gameObject.SetActive(true);
Vector3 mp = Input.mousePosition;
mp.z = depth;
mouse3DPosition = Camera.main.ScreenToWorldPoint(mp);
currentObject.position = Vector3.Lerp(currentObject.position, mouse3DPosition, smooth );
currentObject = null;
}
}
}
}