【发布时间】:2019-01-10 10:52:32
【问题描述】:
我有一个对象不断向前移动,我想通过鼠标拖动屏幕的任何部分(滑动)使它在 X 轴上移动,所以我尝试了这段代码,但是当第一次点击屏幕时,对象移动到鼠标 X 位置(不拖动)!你对如何让它只在拖动时移动有什么建议吗?
脚本:
private bool dragging = false;
private float distance;
public Rigidbody Ball;
public float Speed = 100;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void FixedUpdate () {
Ball.velocity = transform.forward * Speed * Time.deltaTime;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
distance = Vector3.Distance(transform.position, Camera.main.transform.position);
dragging = true;
}
if(Input.GetMouseButtonUp(0))
{
dragging = false;
}
if (dragging)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 rayPoint = ray.GetPoint(distance);
transform.position = new Vector3(rayPoint.x, transform.position.y, transform.position.z);
}
}
【问题讨论】:
-
您要移动的对象是该组件所附加的对象吗?那个对象也是刚体
Ball所连接的那个对象吗?在这种情况下使用Rigidbody.MovePosition 而不是通过Transform组件设置位置! -
@derHugo 我已经编辑了帖子,请再次检查。
-
那么现在代码非常不同......你没有回答我的问题^^而且..因为你在MouseDown(点击的那一刻)上将
draggin设置为true,然后设置位置。为什么要删除OnMouseDown和OnMouseDrag实现? -
我删除它是因为我想在拖动屏幕上的任何地方时移动对象
-
哦,我明白了,让我更新我的答案^^