unity3d 在Unity中使用文本输入旋转2D对象

gudnpqoy  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(211)

我正试图在Unity中创建一个飞机雷达模拟。我正试图通过文本输入和按钮旋转“飞机”。
流程如下:输入270度〉使用鼠标单击左转或右转〉飞机旋转到270度位置
假设360度总是指向北方,那么如果你向左转到270度的位置,你旋转到那个位置所花的时间要比图灵向右旋转到270度的位置所花的时间短。
飞机是一个绿色的圆圈

我可以使用左和右按钮来旋转飞机,但是Angular 是在C#脚本中硬编码的。
左按钮:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Left : MonoBehaviour, IPointerDownHandler,IPointerUpHandler
{
    bool ispressed = false;
    public GameObject Aircraft;

    void Update()
    {
        if (ispressed)
        {
            Aircraft.transform.Rotate(-90.0f, 0, 0, Space.World);
        }
    }
    public void OnPointerDown(PointerEventData eventData)
    {
        ispressed = true;
    }
    public void OnPointerUp(PointerEventData eventData)
    {
        ispressed = false;
    }
}

右按钮:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Right : MonoBehaviour, IPointerDownHandler,IPointerUpHandler
{
    bool ispressed = false;
    public GameObject Aircraft;

    void Update()
    {
        if (ispressed)
        {
            Aircraft.transform.Translate(0.2f, 0, 0);
        }
    }
    public void OnPointerDown(PointerEventData eventData)
    {
        ispressed = true;
    }
    public void OnPointerUp(PointerEventData eventData)
    {
        ispressed = false;
    }
}
bweufnob

bweufnob1#

如果你想得到输入字段中输入的值,这里有一个简单的方法:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class Left : MonoBehaviour, IPointerDownHandler,IPointerUpHandler
{
    bool ispressed = false;
    public GameObject Aircraft;
    public InputField dataInput;
    private float _degree => int.Parse(dataInput.text);

    void Update()
    {
        if (ispressed)
        {
            Aircraft.transform.Rotate(-_degree, 0, 0, Space.World);
        }
    }
    public void OnPointerDown(PointerEventData eventData)
    {
        ispressed = true;
    }
    public void OnPointerUp(PointerEventData eventData)
    {
        ispressed = false;
    }
}

编写以下内容后,可以通过在检查器窗口中输入相应的输入字段来获取值。
这是一个非常简单的方法,但有一些注意事项。如果您在数据中输入数字以外的值,则会将其识别为非预期值。如果您只想输入数字,则还可以将其设置为输入字段的内容类型。

相关问题