这是我的剧本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GoToMouse : MonoBehaviour
{
private Transform tf;
private bool Selected = false;
// Start is called before the first frame update
void Start()
{
tf = GetComponent<Transform>();
}
private void OnMouseDown()
{
if (Selected == false)
{
Selected = true;
}
if (Selected == true)
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
tf.position = mousePos;
}
}
private void OnMouseUp()
{
if (Selected == true)
{
Selected = false;
}
if (Selected == false)
{
}
}
// Update is called once per frame
void Update()
{
}
}
在这个脚本中,我想做两件事。我想让一个对象在被点击时被选中,当你放开鼠标时被取消选中。当一个对象被选中时,我想让它向鼠标光标移动。基本上,你可以用鼠标光标拖动它,然后用物理方法投掷它。
这个脚本有几个问题。
1.每当我点击对象时,它就完全消失了。我没有背景或任何它可能在后面的东西,所以我不知道是什么原因造成的。对象也没有移动到任何地方(我检查了它的变换),所以它看起来像是精灵停止渲染
1.每当我选择它并试图移动它时,它会沿着X轴和Y轴移动不到1个单位,然后停止。由于某种原因,在我放开鼠标之前,它会取消选择自己或停止移动。我不知道为什么会这样,因为取消选择对象的唯一方法是放开鼠标。
这是一个unity 2D项目顺便说一句,这个脚本是我正在做的游戏的 Backbone.js 。请帮助!
谢谢你的好意。
2条答案
按热度按时间ghg1uchk1#
我把tf理解为一个需要移动的角色。
根据OnMouseDown函数,
当用户在碰撞器上按下鼠标按钮时,将调用OnMouseDown。
Doc Link here
你需要一个背景,脚本可能会附加到它。从背景中获取鼠标位置。然后将位置设置为tf(字符)。2D游戏的z位置应该总是0。当然,你可以根据需要改变背景的大小。
图像和脚本可以更好地解释。
下面是GoToMouse.cs
bvuwiixz2#
最后我终于弄明白了,我不知道我做错了什么,但这个新剧本看起来很好用。