Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Unity C#中拖动游戏对象?_C#_Unity3d - Fatal编程技术网

如何在Unity C#中拖动游戏对象?

如何在Unity C#中拖动游戏对象?,c#,unity3d,C#,Unity3d,好的,我正在准备一场卢多游戏,只有两名玩家各有4个棋子。我使用的是一个骰子,当点击将随机旋转给出一个输出 拖动棋子时,y轴也在减小。因此,当蓝色的棋子被拖向红色的棋子时,它将进入棋盘下方(这是不应该发生的。)如何计算它 这是我的C代码: 这是有问题的图像 看起来您的板使用的是垂直轴Z和水平轴X。但我认为您的代码使用的是X和Y 无论如何,我认为偏移变量应该在其应锁定的轴中使用“0”,因为要将其添加到变换中,如果它不为零,则将修改该轴 编辑: 想一想,你只想在一个三维结构的2维上添加。如果你的物体在

好的,我正在准备一场卢多游戏,只有两名玩家各有4个棋子。我使用的是一个骰子,当点击将随机旋转给出一个输出

拖动棋子时,y轴也在减小。因此,当蓝色的棋子被拖向红色的棋子时,它将进入棋盘下方(这是不应该发生的。)如何计算它

这是我的C代码:

这是有问题的图像

看起来您的板使用的是垂直轴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;
}

}