C# 我如何才能为其他操作添加更多按钮,而不会弄乱我的虚拟操纵杆?
我已经试着把这件事做完好几个小时了,但没有一点运气。我对Unity3D和C还很陌生,所以这可能是我无法让它工作的原因 我有一块画布,上面加了一个圆形按钮,就像操纵杆一样。在inspector菜单的按钮上,我有两个事件触发器,一个用于拖动,一个用于结束拖动。每个调用各自独立的函数StartDrag;和端阻力;工作正常,使操纵杆正常工作 我遇到的问题是,如果我添加了一个新按钮,比如说跳跃动作,如果我在使用操纵杆时按下它,操纵杆上的按钮将无法保持其位置,它会受到新触摸的影响,扰乱动作。下面您可以看到操纵杆的代码。我怎样才能为其他操作添加更多按钮,而不会弄乱操纵杆?提前非常感谢,如果可能的话,请记住我的C和Unity经验非常有限C# 我如何才能为其他操作添加更多按钮,而不会弄乱我的虚拟操纵杆?,c#,unity3d,touch,drag,C#,Unity3d,Touch,Drag,我已经试着把这件事做完好几个小时了,但没有一点运气。我对Unity3D和C还很陌生,所以这可能是我无法让它工作的原因 我有一块画布,上面加了一个圆形按钮,就像操纵杆一样。在inspector菜单的按钮上,我有两个事件触发器,一个用于拖动,一个用于结束拖动。每个调用各自独立的函数StartDrag;和端阻力;工作正常,使操纵杆正常工作 我遇到的问题是,如果我添加了一个新按钮,比如说跳跃动作,如果我在使用操纵杆时按下它,操纵杆上的按钮将无法保持其位置,它会受到新触摸的影响,扰乱动作。下面您可以看到操
using UnityEngine;
using System.Collections;
public class JoystickMovement : MonoBehaviour {
private Vector3 joystick_center;
public GameObject Player;
public PlayerData playerDataScript;
void Start () {
joystick_center = transform.position;
}
public void StartDrag(){
float x = Input.mousePosition.x;
float y = Input.mousePosition.y;
Vector3 joyPosition = Vector3.ClampMagnitude(new Vector3 (x-joystick_center.x, y-joystick_center.y, 0), 80) + joystick_center;
transform.position = joyPosition;
}
public void ResetDrag(){
transform.position = joystick_center;
Player.rigidbody.velocity = Vector3.zero;
}
void FixedUpdate () {
if(playerDataScript.playerStatus == "dead")
{
ResetDrag();
}
if (playerDataScript.playerStatus == "alive")
{
Player.rigidbody.velocity = Vector3.ClampMagnitude(Player.rigidbody.velocity, 4);
Player.rigidbody.AddRelativeForce (new Vector3(transform.position.x - joystick_center.x, 0, transform.position.y - joystick_center.y));
}
}
}我的代码的主要问题是,我需要确定我需要观察操纵杆的触摸。当我有两个手指在屏幕上时,操纵杆有点混乱。为了查看我需要哪种触摸,我可以通过比较操纵杆的x或y坐标与操纵杆的原始坐标,尝试只使用操纵杆周围的触摸。如果它们很接近,那么我可以让它使用特定的触摸来运行特定的代码
void Update()
{
int i = 0;
while (i < Input.touchCount)
{
if (Input.GetTouch(i).position.x > joystick_center.x - 150 && Input.GetTouch(i).position.x < joystick_center.x + 150)
{
if (Input.GetTouch(i).phase != TouchPhase.Ended && Input.GetTouch(i).phase != TouchPhase.Canceled && playerDataScript.playerStatus == "alive")
{
//joystick movement code
} else {
// reset joystick movement
}
}
++i;
}
}
如果有人能帮忙的话,这将是一个非常美好的周末。。仍然没有找到解决办法