如何用几个水龙头修理?

丹尼斯·列别杰夫(Denis Lebedev)

我有一个角色轮换,它是基于此的。有一个操纵杆。如果先将手指放在角色旋转上,然后再放在操纵杆上-一切都很好。但是,如果首先在操纵杆上,然后尝试转弯,则什么也不会发生!救命。几天不能决定

 void Start()
    {
        mContr = GameObject.FindGameObjectWithTag("Joystick").GetComponent<MobileController>();
    }

    void Update()
    {
        if(xp > 0)
        {
            deadStatus = false;
            ch_animator.SetBool("dead", false);
        }
        if(xp <= 0)
        {   if(deadStatus == false)
            {
                menu.gameObject.SetActive(false);
                ch_animator.SetBool("Run", false);
                ch_animator.SetBool("Walk", false);
                ch_animator.SetBool("right", false);
                ch_animator.SetBool("left", false);
                ch_animator.SetBool("dead", true);
                dead.gameObject.SetActive(true);
                if(GameObject.Find("selectLvl"))
                {
                    GameObject.Find("selectLvl").SetActive(false);
                }
                if(GameObject.Find("settings"))
                {
                    GameObject.Find("settings").SetActive(false);
                }
                deadStatus = true;
            }
        }
        if(eat > 10)
        {
            if(xp>0&&xp!=100) {
                xp += Time.deltaTime * 1f;
                eat -= Time.deltaTime * 0.5f;
            }
            speedMove = 3;
        } else {
            speedMove = 1;
            if(eat < 1 ) {
                xp -= Time.deltaTime * 0.06f;
            }
        }
        if(xp.ToString() != hpText.text) {
            hpText.text = Math.Round(xp).ToString();
        }
        if(eat.ToString() != eatText.text)
        {
            eatText.text = Math.Round(eat).ToString();
        }
        if(star.ToString() != starText.text)
        {
            starText.text = star.ToString();
        }
        if(gun.ToString() != gunText.text)
        {
            gunText.text = gun.ToString();
        }
        int k = 1;
        while(Input.touchCount > k)
        {
            Vector2 deltaposition = Vector2.zero;
            if(Input.GetTouch(k).position.x > Screen.width / 2 - 100)
            {
                if(k == 0)
                    deltaposition = Input.GetTouch(k).deltaPosition;
                deltaposition.x /= Screen.dpi;
                if(deltaposition.x != 0)
                {
                    float speedX = 3 * deltaposition.x;
                    player.transform.Rotate(Vector3.up * speedX);
                }
            }
            k++;
        }


        CharacterMove();
        GameGravity();
    }

约瑟夫代码

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class MobileController: MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler
{
    private Image jostickBG;
    [SerializeField]
    private Image jostick;
    public Vector2 inputVector;
    private void Start()
    {
        jostickBG = GetComponent<Image>();
        jostick = transform.GetChild(0).GetComponent<Image>();
    }

    public virtual void OnPointerDown(PointerEventData ped)
    {

    }
    public virtual void OnPointerUp(PointerEventData ped)
    {
        inputVector = Vector2.zero;
        jostick.rectTransform.anchoredPosition = Vector2.zero;
    }

    public virtual void OnDrag(PointerEventData ped)
    {
        Vector2 pos;
        if(RectTransformUtility.ScreenPointToLocalPointInRectangle(jostickBG.rectTransform, ped.position, ped.pressEventCamera, out pos))
        {
            pos.x = (pos.x / jostickBG.rectTransform.sizeDelta.x);
            pos.y = (pos.y / jostickBG.rectTransform.sizeDelta.y);
            inputVector = new Vector2(pos.x * 2 - 0, pos.y * 2 - 0);
            inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;
            jostick.rectTransform.anchoredPosition = new Vector2(inputVector.x * (jostickBG.rectTransform.sizeDelta.x / 2), inputVector.y * (jostickBG.rectTransform.sizeDelta.y / 2));
        }
    }

    public float Horizontal()
    {
        return inputVector.x;
    }

    public float Vertical()
    {
        return inputVector.y;
    }
}
法国式

问题来自while循环:

您的逻辑仅适用于旋转播放器上的k = 0且喜悦中的k = 1,并且您开始以值k = 1进入while循环,如果此值是旋转播放器的位置,则测试if是否始终为false

if(Input.GetTouch(k).position.x > Screen.width / 2 - 100)

我建议您像这样重构代码:

当您有2次触摸时,k = 0和k = 1,请为每次触摸找到正确的动作。

我不明白为什么您不进入k = 0的while循环?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何捕获WKWebView忽略的水龙头

来自分类Dev

如何设置水龙头的位置

来自分类Dev

如何模拟uiview上的水龙头?

来自分类Dev

截取UITabBar水龙头

来自分类Dev

本机水龙头区域

来自分类Dev

可可事件水龙头

来自分类Dev

如何调试正在接收幻像水龙头的iPhone?

来自分类Dev

如何删除水龙头外面的界面元素?

来自分类Dev

如何扩展水龙头以处理连续触摸?

来自分类Dev

如何检测Mac触控板上的四指水龙头?

来自分类Dev

如何在SCNPlane上找到水龙头?

来自分类Dev

如何检测火焰组件上的水龙头?

来自分类Dev

如何在水龙头上更改形状颜色

来自分类Dev

颤动:如何在Expansiontile中添加水龙头

来自分类Dev

如何在iOS 7中检测水龙头的位置

来自分类Dev

如何在水龙头上更改UICollectionViewCell中的图像?

来自分类Dev

如何使方法充当MKA注释上的水龙头?

来自分类Dev

如何使用三指水龙头修复Firefox?

来自分类Dev

如何在SCNPlane上找到水龙头?

来自分类Dev

如何检测Mac触控板上的四指水龙头?

来自分类Dev

当使用水龙头关闭UIKeyboard时,如何忽略所有UIControl水龙头

来自分类Dev

屏幕外的UIView响应水龙头

来自分类Dev

WPF中的接近水龙头

来自分类Dev

WPF中的接近水龙头

来自分类Dev

检测水龙头何时在UITextView之外

来自分类Dev

UIScrollView检测圆形水龙头

来自分类Dev

如何将OS X触控板的三指水龙头重新分配给四指水龙头?

来自分类Dev

如何在水龙头上的网格视图项目上执行多选功能?

来自分类Dev

如何在AudioEngine的默认inputNode上安装水龙头并写入文件