1简单控制

Posted LiuChangwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1简单控制相关的知识,希望对你有一定的参考价值。

一、物体移动

法1:

    void Update ()
    {
        //transform:(转换)Translate:(平移)Input.GetAxis:(获得轴输入) Horizontal:(水平轴)Vertical:(垂直轴)
        transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, Input.GetAxis("Vertical") * Time.deltaTime * 5);
    }
    //Time.deltaTime(使物体匀速):如果不乘以Time.deltaTime则以每帧为单位进行旋转,如果乘以Time.deltaTime则以每秒为单位

 其中:

    void Update ()
    {    //物体方向以摄像机坐标为准
        transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);
    }
    void Update ()
    {    //物体方向以世界坐标为准,其中Space.Self以本地(物体)坐标为准
        transform.Translate(Vector3.forward * Time.deltaTime,Space.World);
    }

 

 

法2:

    void Update ()
    {

        if (Input.GetKey(KeyCode.W))//GetKey(获取键盘输入)KeyCode(键码)
        {
            transform.Translate(Vector3.forward * Time.deltaTime * 5);
        }
        if (Input.GetKey(KeyCode.S))
        {
            transform.Translate(0, 0, -Time.deltaTime * 5);//三个参数对应于(在X抽上左右移动,在Y轴上上下移动,在Z轴上前后移动)
        }
        if (Input.GetButton("Jump"))
        {
            transform.Translate(Vector3.up * Time.deltaTime * 5);
        }
    }

 

 注:Translate后接Vector3三维矢量不需要添加三个参数。GetButton:后面加双引号直接输入按键名称的字符串,而GetKey则是输入字符码。(GetButton:点住鼠标不放,代码会持续运行;GetButtondown:点一次代码运行一次;GetButtonUp:放开鼠标才会执行)

二、物体的旋转

    float rotateSpeed = 50f;
    void Update ()
    {
        if (Input.GetButton("Fire2"))
        {
            transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed);
        }
        if (Input.GetButton("Fire1"))
        {
            transform.Rotate(Time.deltaTime * rotateSpeed, 0, 0);
        }
    }

 三、限制移动范围

    void Update ()
    {
        if (transform.position.x > -4 && transform.position.x < 4)
        {
            transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, 0);
        }
        if (transform.position.x < -4)
        {
            transform.Translate(Time.deltaTime * 5, 0, 0);
        }
        if (transform.position.x > 4)
        {
            transform.Translate(-Time.deltaTime * 5, 0, 0);
        }
    }

 

以上是关于1简单控制的主要内容,如果未能解决你的问题,请参考以下文章

你可能不知道的JavaScript代码片段和技巧(上)

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

为啥这段代码会泄露? (简单的代码片段)

片段中的媒体控制器

Laravel:如何在控制器的几种方法中重用代码片段