- 第一步:创建一个Cube和新的脚本命名为PropertiesAndCoroutines,并将脚本挂载到Cube上
PropertiesAndCoroutines脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PropertiesAndCoroutines : MonoBehaviour
{
public float smoothing = 7f;
private Vector3 target;
public Vector3 Target
{
get{ return target; }
set
{
target = value;
StopCoroutine("Movement");
StartCoroutine("Movement",target);
}
}
IEnumerator Movement(Vector3 target)
{
while(Vector3.Distance(transform.position,target)>0.001f)
{
transform.position = Vector3.MoveTowards(transform.position, target, smoothing * Time.deltaTime);
yield return null;
}
}
}
- 创建一个Plane和新的脚本ClickSetPosition,并将脚本挂载到Plane上
ClickSetPosition脚本代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClickSetPosition : MonoBehaviour
{
public PropertiesAndCoroutines coroutineScript;
private void OnMouseDown()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
Physics.Raycast(ray,out hit);
if(hit.collider.gameObject==gameObject)
{
Vector3 newTarget = hit.point + new Vector3(0,0.5f,0);
coroutineScript.Target = newTarget;
}
}
}