如何在Unity C#中拖动游戏对象?
好的,我正在准备一场卢多游戏,只有两名玩家各有4个棋子。我使用的是一个骰子,当点击将随机旋转给出一个输出 拖动棋子时,y轴也在减小。因此,当蓝色的棋子被拖向红色的棋子时,它将进入棋盘下方(这是不应该发生的。)如何计算它 这是我的C代码: 这是有问题的图像如何在Unity C#中拖动游戏对象?,c#,unity3d,C#,Unity3d,好的,我正在准备一场卢多游戏,只有两名玩家各有4个棋子。我使用的是一个骰子,当点击将随机旋转给出一个输出 拖动棋子时,y轴也在减小。因此,当蓝色的棋子被拖向红色的棋子时,它将进入棋盘下方(这是不应该发生的。)如何计算它 这是我的C代码: 这是有问题的图像 看起来您的板使用的是垂直轴Z和水平轴X。但我认为您的代码使用的是X和Y 无论如何,我认为偏移变量应该在其应锁定的轴中使用“0”,因为要将其添加到变换中,如果它不为零,则将修改该轴 编辑: 想一想,你只想在一个三维结构的2维上添加。如果你的物体在
看起来您的板使用的是垂直轴Z和水平轴X。但我认为您的代码使用的是X和Y 无论如何,我认为偏移变量应该在其应锁定的轴中使用“0”,因为要将其添加到变换中,如果它不为零,则将修改该轴 编辑: 想一想,你只想在一个三维结构的2维上添加。如果你的物体在,比如说,[15,10,8],你想在X方向上向上移动10,你只需要添加到X维度。(
[10,0,0]
)
[15,10,8]+[10,0,0]=[25,10,8]
我怀疑您的偏移量变量看起来像[10,0,2]
之类的东西,所以当您添加它时,您是在无意中添加到Z维度
ie:
[15,10,8]+[10,0,2]=[25,10,10]
你能不能在代码表中提到我尝试过偏移值0,也尝试过将screenpoint.y替换为InputMousePosition.y,但它仍然没有正确的移动。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
RequireComponent(typeof(MeshCollider))]
public class DragPawn : MonoBehaviour
{
private Vector3 screenPoint;
private Vector3 offset;
void OnMouseDown()
{
screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}
void OnMouseDrag()
{
Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
transform.position = curPosition;
}
}