鼠标拖动时移动Rigidbody2D

时间:2015-11-25 06:43:42

标签: unity3d unityscript

我是团结三维游戏引擎的新手。我正在创建一个木纹益智游戏。我想根据鼠标位置移动木材的一小部分。我使用的是刚体2D。移动时我也想检测来自其他木质部件和任何其他障碍物的碰撞。请帮帮我。

1 个答案:

答案 0 :(得分:0)

你的脚本可能看起来像这样(这取决于你正在寻找的精确功能):

#pragma strict

private var moveWithMouse : boolean = false;
private var lastMousePosition : Vector3;

function Update()
{
    var changeInMousePosition : Vector3 = Vector3(0,0,0);
    if (lastMousePosition != null)
    {
       changeInMousePosition = Input.mousePosition-lastMousePosition;
    }
    lastMousePosition = Input.mousePosition;
    if (moveWithMouse)
    {
        transform.position += Camera.main.ScreenToWorldPoint(changeInMousePosition) - Camera.main.ScreenToWorldPoint(Vector3(0,0,0));
    }
}

function OnMouseDown()
{
    moveWithMouse = true;
}

function OnMouseUp()
{
    moveWithMouse = false;
}

以下是解释上述代码的奇特部分的所有文档页面。

  

http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html   http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseUp.html   http://docs.unity3d.com/ScriptReference/Input-mousePosition.html   http://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html

如果代码中有任何新内容并且未在文档页面中介绍(例如Vector3,Transform,Update函数等等),那么在尝试项目之前,您可以从访问初学者的统一指南中受益

https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/coding-for-the-absolute-beginner

要使用我的脚本,您必须:

  • 创建一个GameObject(你想要可拖动的那个)
  • 为其添加精灵渲染器(并选择所需的图像)
  • 添加2d对撞机(polygon2d表示精度,circle2d或box2d表示速度)
  • 创建一个新脚本并将其添加到GameObject

在创建和自定义您自己的游戏时,学习如何使用Unity的编辑器甚至可能比编程本身更重要,所以如果您不知道如何执行上述操作(创建 GameObject ,并添加组件),您应该参考Unity编辑器的初学者指南。

这是关于Unity编辑器的一组教程页面: http://docs.unity3d.com/Manual/UnityBasics.html

这是我认为最重要的页面: http://docs.unity3d.com/Manual/UnityBasics.html

希望这会有所帮助。干杯