当我开始拉手指时,我该如何让我的球员跟随我的手指



我试图制作一个2D迷宫游戏,它很简单,但我需要让玩家跟随我的手指在屏幕上,我只是让玩家走到我把手指放在屏幕上的地方,但我只想让它只有当我用手指在玩家身上时才开始跟随,但它根本不起作用。

我正在使用这个脚本atm,但没有按我想要的方式工作:X

void Update() {
if(Input.GetMouseButton(0)) {
Vector3 pos = Input.mousePosition;
pos.z = distanceFromCamera;
pos= cam.ScreenToWorldPoint(pos);
rb.velocity = (pos-square.position)*velocity;
}
if(Input.GetMouseButtonUp(0)) {
rb.velocity = Vector3.zero;
}
}

现在尝试这个脚本:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(MeshCollider))]

public class DraggingObject : 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;
}
}

它像我想的那样拖动,但当我需要碰撞时,它不起作用,只是像没有碰撞一样传球。

我只想使用IDragHandler来简化这一点:

public class FollowFinger : MonoBehaviour, IDragHandler
{
// ...
public void OnDrag(PointerEventData eventData)
{
Vector3 pos = eventData.position
pos.z = distanceFromCamera;
pos= cam.ScreenToWorldPoint(pos);
rb.velocity = (pos-square.position)*velocity;
}
}

您可能需要在相机中添加Physics2DRaycaster(如果使用的是3d,则添加PhysicsRaycaster(。

你可能还想让你的玩家的对撞机(任何合适的类型(比它们看起来大一点,这样玩家就可以把他们的手指拖得更远。

请参阅此处获取更多指导。

最新更新