沿动态定义的线移动对象的问题

时间:2016-05-17 11:00:47

标签: c# unity3d

我是绝对的编程初学者。我正在研究一个小小的游戏原型,只是为了好玩。

你正在拖动一个角色。拖动角色时,角色会保持静止,您会看到一条指向相反方向的目标线。释放鼠标按钮时,角色应沿着定位线移动,直到他碰到某些东西。

一切都很有效。但有一点点抵消。角色移动了一下目标线。我觉得代码的光线部分有一些问题(在Dragging()方法中)。

这是我的代码:

using UnityEngine;
using System.Collections;

public class PlayerControllerTest : MonoBehaviour {

    Rigidbody2D rig;
    int dragging;
    Vector3 mousePosition;
    bool wasMoving;
    LineRenderer lineRenderer;

    void Start () {
        lineRenderer = GetComponent<LineRenderer> ();
        rig = GetComponent<Rigidbody2D> ();
    }

    void Update () {
        if (dragging == 1) {
            Dragging ();
        }

        if (dragging == 2) {
            float distanceMouseToPlayer = Vector3.Distance (transform.position,mousePosition);
            rig.velocity = (-transform.InverseTransformPoint (mousePosition))/distanceMouseToPlayer * 3;
        }
    }

    void OnMouseDown()
    {
        dragging = 1;
    }

    void Dragging()
    {
        mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
        mousePosition.z = 0f;

        var layerMask = 1 << 8;
        layerMask = ~layerMask;

        RaycastHit2D hit = Physics2D.Raycast (mousePosition,transform.position-    mousePosition,Mathf.Infinity,layerMask);
        lineRenderer.enabled = true;
        lineRenderer.SetPosition (0, transform.position);
        lineRenderer.SetPosition (1, hit.point);
    }

    void OnMouseUp()
    {
        dragging = 2;
        lineRenderer.enabled = false;
    }
}

0 个答案:

没有答案