版本: Unity 6 (6000.0)
语言英语
  • C#

Vector2.MoveTowards

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们会阅读用户提出的每个建议,并在适当的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议修改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta);

描述

将一个点 current 移动到 target

这与 Vector2.Lerp 类似,但该函数会确保距离永远不会超过 maxDistanceDeltamaxDistanceDelta 的负值会将向量推离 target

using UnityEngine;

// 2D MoveTowards example // Move the sprite to where the mouse is clicked // // Set speed to -1.0f and the sprite will move // away from the mouse click position forever

public class ExampleClass : MonoBehaviour { private float speed = 10.0f; private Vector2 target; private Vector2 position; private Camera cam;

void Start() { target = new Vector2(0.0f, 0.0f); position = gameObject.transform.position;

cam = Camera.main; }

void Update() { float step = speed * Time.deltaTime;

// move sprite towards the target location transform.position = Vector2.MoveTowards(transform.position, target, step); }

void OnGUI() { Event currentEvent = Event.current; Vector2 mousePos = new Vector2(); Vector2 point = new Vector2();

// compute where the mouse is in world space mousePos.x = currentEvent.mousePosition.x; mousePos.y = cam.pixelHeight - currentEvent.mousePosition.y; point = cam.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 0.0f));

if (Input.GetMouseButtonDown(0)) { // set the target to the mouse click location target = point; } } }