【问题标题】:Unity choose only one from all tagged gameObjectsUnity 从所有标记的游戏对象中只选择一个
【发布时间】:2023-03-19 11:55:01
【问题描述】:

我有 100 个带有名称标签(卡片)的立方体,我只希望我按下的立方体能够旋转。我的代码有效,但旋转了所有带有标签(卡片)的立方体 这是我的代码 我只需要从整个(卡片)标签系列中旋转我按下的对象

其他一切正常

using System.Collections; 
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneOneScript : MonoBehaviour
{


private bool canIRotate;
void Update()
{
    foreach (Touch touch in Input.touches)
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
        {
            if (touch.phase == TouchPhase.Began)
            {

                if (hit.collider.tag == "card")
                {
                    canIRotate = true;

                }
            }
            if (touch.phase == TouchPhase.Ended)
            {
                canIRotate = false;
            }

            if (touch.phase == TouchPhase.Moved)
            {


                if (canIRotate == true)
                {
                       transform.LookAt(new Vector3(hit.point.x, hit.point.y,         transform.position.z));
                }


            }
        }






    }

}
}

【问题讨论】:

  • SceneOneScript 附加的 GameObject 的 cubes 子对象吗?
  • 不,他们不是
  • 一定是在那个有Camera的GameObject上?
  • 要最终确定答案,如果您的原始问题已解决,请记住接受并投票,如果您有其他问题,请提出新问题:stackoverflow.com/help/someone-answers

标签: android unity3d rotation game-engine touchscreen


【解决方案1】:

使用 RayCast 是很好的解决方案:

if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began)    
{
     Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
     RaycastHit hit;
     Debug.DrawRay(ray.origin, ray.direction * 100, Color.yellow, 100f);
     if(Physics.Raycast(ray, out hit))
     {
         Debug.Log(hit.transform.name);
         if (hit.collider != null) {

             GameObject touchedObject = hit.transform.gameObject;

             Debug.Log("Touched " + touchedObject.transform.name);
         }
     }
}

【讨论】:

  • 感谢您的努力,但这对我也不起作用
  • 我想你在每个立方体上都有碰撞器?你调试的时候有收获吗?
  • 我打了,但它不像我想要的那样工作,也许我应该更好地解释
  • 有一个 10 x 10 个立方体的网格,所以我想单击一个立方体,立方体向前移动,然后 clickHolding 旋转立方体,当我释放立方体时,立方体应该保持这样旋转,当我单击时旋转后的立方体再次回到网格中的正常旋转状态,并且所有立方体都必须能够彼此单独单击和旋转
  • Frenchy 的好答案,您正在寻找的只是将其粘贴到您的代码中 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
相关资源
最近更新 更多