【问题标题】:How to get The position of a sprite automatically in Unity 2D如何在 Unity 2D 中自动获取精灵的位置
【发布时间】:2017-03-23 02:51:44
【问题描述】:

我对统一很陌生,我正在尝试做一个纸牌游戏,我遇到了坐标问题。我正在尝试获取触摸的位置并使精灵移动到屏幕中的特定位置。这是我在 c# 中的解决方法脚本:

using UnityEngine;
using System.Collections;

public class CardMovement : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    Rect recta = new Rect (-4.71f,-3.98f,4.52f,6.8f);

    Touch To = new Touch ();

    Camera C = GetComponent<Camera>();

    Vector3 p = new Vector3 ();

    p = C.ScreenToWorldPoint (To.position);

    if (recta.Contains(p)== true){

        transform.Translate(0.79f,-1.13f,0f);

    }


}
}

问题是我不能让它移动到那个特定的位置。是因为坐标不匹配吗?有没有办法直接获取精灵的坐标而不输入它们?谢谢帮助;)

【问题讨论】:

  • 你想达到什么目的?触摸卡片,然后它会移动到屏幕上的特定点?我不确定您是如何尝试完成这项工作的,因为您可以使用新的 UI 系统、Sprites、Planes,一切都适用于 2D 透视图,因此如果您再澄清一点,这将非常有帮助。据我所知,您正在尝试使用 3D 视图来翻译卡片。我建议您查看此link 开始时有点吵,所以要小心
  • 您在寻找对象的位置?最基本的是 gameObject.transform.position;没有?
  • 对不起,回答晚了,我想做的是检测用户何时触摸精灵所在的区域,并响应它会移动到我想要的特定位置。
  • @Salvador 我使用了 3D 维度,因为 Camera.screenTOViewportpoint 方法建议使用 3D 矢量。感谢帮助
  • @Andromelus 我会试试的。谢谢你的帮助

标签: c# unity2d


【解决方案1】:

如果您想要检测用户在表面/区域上轻敲的位置,则该对象必须有一个碰撞器,您应该使用 Raycast 来检测碰撞的位置。

Moving an Agent to a Position Clicked by the Mouse

在此示例中,他们使用来自 unity 的导航网格,但您不必这样做,您要查找的信息在 hit.point

【讨论】:

    【解决方案2】:

    我设法将卡移动到我想要的位置(不完全)并使用了我自己构建的另一个代码,我没有使用你的提议,因为我不明白或者我猜它使用的是 3D 脚本(如果我'错了请纠正我)所以这是我的代码的更新版本:

     using UnityEngine;
     using System.Collections;
    
    public class CardMovement : MonoBehaviour {
    public RectTransform rectangle;
    
    // Use this for initialization
    void Start () {
    
        rectangle = GetComponent<RectTransform> ();
    
    
    }
    
    // Update is called once per frame
    void Update () {
    
        if (rectangle.rect.Contains (Input.GetTouch (0).deltaPosition)){
    
            Vector2 V = new Vector2 (0.125f, 0.125f);
    
            transform.position = V;
    
    
        }
    
    
    }
    }
    

    现在我面临的主要问题:

    • 我用于 2D 向量的 (0.125,0.125) 给了我一个位于屏幕中间的位置,而它应该是我认为的 (0.5,0.5) 向量的位置(最后一个向量给了我一个位置屏幕外的卡片)。
    • 当我使用Camera.ScreenToWorldpointCamera.ScreenToViewportpoint时,卡没有响应触摸(我猜是坐标问题)

    现在主要问题:这些坐标之间有什么区别:世界坐标、屏幕坐标和视口坐标。我在统一手册中没有找到解释。

    感谢您的帮助:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多