public Transform box;
private Vector3 targetPos;
public Transform plane;
private float offset = 0;
private void Start()
{
offset = box.position.y - plane.position.y;
targetPos = box.position;
}
void Update () {
if(Input.GetKeyDown(KeyCode.Mouse1))
{
Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
targetPos = hit.point + new Vector3(0, offset, 0);
}
}
box.position = Vector3.MoveTowards(box.position, targetPos, 50 * Time.deltaTime);
}
3D物体跟随:并处理所跟随物体的朝向。
代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class UpdatePos : MonoBehaviour
{
public Transform go;
void Update()
{
if (Input.GetKey(KeyCode.Mouse0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
go.position = ray.GetPoint(3);
Debug.DrawLine(go.position, Camera.main.transform.position, Color.red, 0.1f);
Quaternion rot = Quaternion.LookRotation(ray.direction);
go.localEulerAngles = new Vector3(rot.eulerAngles.x, rot.eulerAngles.y, rot.eulerAngles.z);
}
}
}