我是绝对的编程初学者。我正在研究一个小小的游戏原型,只是为了好玩。
你正在拖动一个角色。拖动角色时,角色会保持静止,您会看到一条指向相反方向的目标线。释放鼠标按钮时,角色应沿着定位线移动,直到他碰到某些东西。
一切都很有效。但有一点点抵消。角色移动了一下目标线。我觉得代码的光线部分有一些问题(在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;
}
}