栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity 2D物体移动

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity 2D物体移动

方向键控制移动

方法1:使用transform.Translate()函数

using UnityEngine;

public class MoveDemo : MonoBehaviour
{
    private void Update()
    {
        GetInput();
    }

    //获取键盘输入的操作
    public void GetInput()
    {
        if (Input.GetKey(KeyCode.W))
        {
            this.gameObject.transform.Translate(Vector3.forward * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.S))
        {
            this.gameObject.transform.Translate(Vector3.down * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.A))
        {
            this.gameObject.transform.Translate(Vector3.left * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.D))
        {
            this.gameObject.transform.Translate(Vector3.right * Time.deltaTime);
        }
    }
}

方法2:使用Rigidbody2D组件

using UnityEngine;

public class MoveDemo : MonoBehaviour
{
    public float moveSpeed = 3.0f;

    Rigidbody2D rb2d;
    Vector2 inputPos;

    private void Start()
    {
        rb2d = gameObject.GetComponent();
        inputPos = new Vector2();
    }

    private void Update() { }

    //获取物理操作
    private void FixedUpdate()
    {
        MoveObject();
    }

    public void MoveObject()
    {
        //获取键盘操作的水平数值
        inputPos.x = Input.GetAxisRaw("Horizontal");
        //获取键盘操作的垂直数值
        inputPos.y = Input.GetAxisRaw("Vertical");
        //向量归一,使其移动速度一致。
        inputPos.Normalize();
        //移动速率
        rb2d.velocity = inputPos * moveSpeed;
    }
}

向右方向固定移动

方法1:transform.localPosition

using UnityEngine;

public class MoveDemo : MonoBehaviour
{
    private void FixedUpdate()
    {
        MoveRigth();
    }

    //移动
    public void MoveRigth()
    {
        Vector2 pos = gameObject.transform.localPosition;
        //向右 * 每帧数时间
        pos += Vector2.right * Time.deltaTime;
        //移动
        gameObject.transform.localPosition = pos;
    }
}

方法2:使用Rigidbody2D组件

using UnityEngine;

public class MoveDemo : MonoBehaviour
{
    //速度
    public float moveSpeed = 3.0f;

    Rigidbody2D rb2d;

    private void Start()
    {
        //获取Rigidbody2D组件
        rb2d = gameObject.GetComponent();
    }

    private void Update() { }

    //获取物理操作
    private void FixedUpdate()
    {
        MoveRigth();//
    }

    //向右移动
    public void MoveRigth()
    {
        //速率
        rb2d.velocity = Vector2.right * moveSpeed;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905844.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号