【发布时间】:2017-01-10 19:05:19
【问题描述】:
我想通过逼真的运动和旋转将我的船移动到我点击的位置:
(http://i.imgur.com/Pk8DOYP.gif)
这是我的代码(附在我的船游戏对象上):
基本上,当我点击某个地方时,它会移动船,直到它到达我首先点击的点(我为你简化了我的代码)
using UnityEngine;
using System.Collections;
public class BoatMovement : MonoBehaviour {
private Vector3 targetPosition;
private float speed = 10f;
private bool isMoving;
void Update(){
if (!isMoving && Input.GetMouseButton (0)) {
targetPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
isMoving = true;
}
if (isMoving) {
moveToPosition ();
}
}
void moveToPosition() {
transform.position = Vector3.MoveTowards (transform.position, new Vector3(targetPosition.x, targetPosition.y, 0f), speed * Time.deltaTime);
if (transform.position.x == targetPosition.x && transform.position.y == targetPosition.y) {
isMoving = false;
}
}
}
经过一些研究和尝试,我没有找到一种方法来做我想做的事。
感谢您的帮助
【问题讨论】:
-
那么,你应该做的第一件事就是沿着船的
transform.forward前进。旋转船,使其可以接近目的地。 (如果您边移动边转动,旋转的精确算法将是问题中最难解决的部分。)