通过虚拟按钮访问图像目标外的对象?
Accessing Objects outside an Image target through Virtual Buttons?
我可以使用作为图像目标子项的虚拟按钮来移动不是图像目标子项的对象吗?
如果是,我如何编写相同的脚本?
如果没有,还有其他解决方法吗?
看这张图,你就明白我要干什么了。
基本上,我想要那些虚拟键在迷宫内移动球
试试这件尺码。
在您的图像目标上,将此脚本附加到它。
基本上你会使用 FindChild 或其他东西,而是将游戏对象 public 留在 class 上。这样你就可以通过检查器将它直接分配给场景中的任何东西。
还有TADAA!
using UnityEngine;
using System.Collections.Generic;
public class VirtualButtonEvent : MonoBehaviour, IVirtualButtonEventHandler {
public GameObject Sphere;
public float speed;
// register buttons for event handling
void Start() {
VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; ++i) { vbs[i].RegisterEventHandler(this); }
}
// button is "pressed" to move Sphere
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb) {
if (vb.VirtualButtonName=="Up") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, speed) * speed);
}
if (vb.VirtualButtonName=="Down") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, -speed) * speed);
}
if (vb.VirtualButtonName=="Left") {
Sphere.rigidbody.AddForce(new Vector3 (-speed, 0, 0) * speed);
}
if (vb.VirtualButtonName=="Right") {
Sphere.rigidbody.AddForce(new Vector3 (speed, 0, 0) * speed);
}
}
// Release to stop Sphere? (Maybe. Don't think this will stop the ball from moving.
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb) {
if (vb.VirtualButtonName=="Up") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
if (vb.VirtualButtonName=="Down") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
if (vb.VirtualButtonName=="Left") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
if (vb.VirtualButtonName=="Right") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
}
}
我可以使用作为图像目标子项的虚拟按钮来移动不是图像目标子项的对象吗?
如果是,我如何编写相同的脚本?
如果没有,还有其他解决方法吗?
看这张图,你就明白我要干什么了。
基本上,我想要那些虚拟键在迷宫内移动球
试试这件尺码。
在您的图像目标上,将此脚本附加到它。 基本上你会使用 FindChild 或其他东西,而是将游戏对象 public 留在 class 上。这样你就可以通过检查器将它直接分配给场景中的任何东西。
还有TADAA!
using UnityEngine;
using System.Collections.Generic;
public class VirtualButtonEvent : MonoBehaviour, IVirtualButtonEventHandler {
public GameObject Sphere;
public float speed;
// register buttons for event handling
void Start() {
VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; ++i) { vbs[i].RegisterEventHandler(this); }
}
// button is "pressed" to move Sphere
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb) {
if (vb.VirtualButtonName=="Up") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, speed) * speed);
}
if (vb.VirtualButtonName=="Down") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, -speed) * speed);
}
if (vb.VirtualButtonName=="Left") {
Sphere.rigidbody.AddForce(new Vector3 (-speed, 0, 0) * speed);
}
if (vb.VirtualButtonName=="Right") {
Sphere.rigidbody.AddForce(new Vector3 (speed, 0, 0) * speed);
}
}
// Release to stop Sphere? (Maybe. Don't think this will stop the ball from moving.
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb) {
if (vb.VirtualButtonName=="Up") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
if (vb.VirtualButtonName=="Down") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
if (vb.VirtualButtonName=="Left") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
if (vb.VirtualButtonName=="Right") {
Sphere.rigidbody.AddForce(new Vector3 (0, 0, 0));
}
}
}