统一在屏幕上的触摸位置添加对象(旋转)
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 替换为对场景中所有立方体的引用。这可以是数组、列表等
大家好,我有一个代码可以在游戏的触摸区域克隆一个对象,我有一个按钮可以改变对象的旋转(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 替换为对场景中所有立方体的引用。这可以是数组、列表等