tobewannatobe 2022-05-27 17:05 采纳率: 0%
浏览 87

unity2D打字游戏 键盘事件

unity里,我定义了一个char类型,生成了随机26个字母,然后想用键盘事件,按下这些随机字母,则摧毁主体,但是Input。GetKeyDown()括号里不能直接写char,会报错:cannot convert from 'char' to 'UnityEngine.KeyCode'。应该怎么转换呢?2D的打字游戏。
public class people : MonoBehaviour

{
GameObject peopleGam;
public Text peopleText;
char a;

void Start()
{
    peopleGam = this.gameObject;
    char ch=(char)('A'+Mathf.RoundToInt(Random.Range(0,26)));  //产生随机数 转换为char类型
    peopleText.text = ch.ToString();
    if (Input.GetKeyDown(a))
     {
        Destroy(peopleGam);
    }
}
  • 写回答

3条回答

  • CoderZ1010 Unity领域优质创作者 2022-05-27 17:55
    关注

    首先Random.Range是有int类型参数的重载的,不需要Mathf.RoundToInt去强转。
    其次KeyCode枚举中的A-Z键是从97-122,你需要用随机得到的数值+97,然后转为KeyCode。

    GameObject peopleGam;
    public Text peopleText;
    void Start()
    {
        peopleGam = this.gameObject;
        int random = Random.Range(0, 26);
        char ch = (char)('A' + random);
        peopleText.text = ch.ToString();
        int targetKey = random + 97;
        if (Input.GetKeyDown((KeyCode)targetKey))
        {
            Destroy(peopleGam);
        }
    }
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月27日

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛