unity3d 2D平面游戏实现鼠标拖拽物体移动 50
2个回答
展开全部
呃..以前做过..代码找不到了..
跟你说下思路吧..
鼠标拖动的操作是由三个时间组成的..
鼠标按住 鼠标移动 鼠标松开.
定义一个公用变量.
鼠标按住的时候,..变量为true
松开的时候..变量为false
而鼠标移动的时候,,必须为true才可以使对象移动..
移动时先计算鼠标到父窗口的相对位置,和对象的相对位置然后得到相差值..之后鼠标移动的时候获取到的鼠标位置加上或者减去这个相对值就是对象应该在的位置..
跟你说下思路吧..
鼠标拖动的操作是由三个时间组成的..
鼠标按住 鼠标移动 鼠标松开.
定义一个公用变量.
鼠标按住的时候,..变量为true
松开的时候..变量为false
而鼠标移动的时候,,必须为true才可以使对象移动..
移动时先计算鼠标到父窗口的相对位置,和对象的相对位置然后得到相差值..之后鼠标移动的时候获取到的鼠标位置加上或者减去这个相对值就是对象应该在的位置..
追问
用playmaker 能实现不 给点思路谢谢了!
展开全部
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class PictureMove : MonoBehaviour,
IBeginDragHandler,IDragHandler
{
private Vector3 offset;//物体与鼠标点击处的差值
private Vector3 mousePos;//鼠标位置
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
#region IBeginDragHandler implementation
//准备拖拽接口
public void OnBeginDrag (PointerEventData eventData)
{
//获取鼠标位置
mousePos=Input.mousePosition;
//获取鼠标位置与图片位置的偏移量
offset=transform.position-mousePos;
}
#endregion
#region IDragHandler implementation
//拖拽接口
public void OnDrag (PointerEventData eventData)
{
//图片随鼠标移动
transform.position= Input.mousePosition + offset;
}
#endregion
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |