统一在屏幕上的触摸位置添加对象(旋转)

unity add object on touched place on screen(rotation)

大家好,我有一个代码可以在游戏的触摸区域克隆一个对象,我有一个按钮可以改变对象的旋转(y 旋转 25 度),我希望当我触摸屏幕时克隆对象也会随着对象的当前旋转而改变。谢谢大家

private Rigidbody myrigidbody;

void Start()
{
    myrigidbody = GetComponent<Rigidbody>();
}

void Update()
{
    if (Input.touchCount > 0) 
    {
        var touch = Input.GetTouch(0);
        if (touch.phase == TouchPhase.Began) 
        {
            var pos = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 10f));
            myrigidbody.MovePosition(new Vector3(pos.x, pos.y, 0f));
        }
    }  
}

将在这里跟进 TEEBQNE,

如果您希望所有立方体都旋转,则需要一种方法来引用所有立方体。如果您现在只是在测试,您可以使用特定名称(如“cube”)标记所有多维数据集对象,并使用 FindGameObjectsWithTag() 函数遍历所有对象类型。

所以你可以从这个改变你的功能

public void firstAngle() { 
cube.transform.Rotate(0f, 22.5f, 0.0f);
}

对此

public void firstAngle() { 
foreach (GameObject obj in FindGameObjectsWithTag("cube")){
obj.transform.Rotate(0f, 22.5f, 0.0f);
}
}

当然,如果您想要评论中建议的更好的约定,您可以将 FindGameObjectsWithTag 替换为对场景中所有立方体的引用。这可以是数组、列表等