(M)刚体运动(移动和翻转)

本文详细介绍了在Unity游戏开发中如何使用刚体组件进行左右移动,包括通过fixedupdate定时更新速度和两种翻转方法:传统利用transform.scale和精灵图渲染器的锚点翻转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.左右移动

1.对刚体的运动的处理通常都用fixedupdate来处理,这样可以以恒定的时间间隔执行。
在fixedupdate中执行move函数,由于move需要刚体组件中的参数,需要加入刚体参数。

2.加入刚体参数方法:

法一,不需要等待游戏执行或者编辑器执行就可以获取刚体组件的使用权,当需要在所有代码执行之前引入这些刚体参数时
在人物中写入刚体变量Rb,回到inspector中通过拖拽将刚体组件中的参数引入

在这里插入图片描述

法二,通过awake方法去获得刚体中变量

通过GetComponent获得自身的刚体参数

private Rigidbody2D rb;

private void Awake()
    {
        inputControl = new PlayerInputControl();

        rb = GetComponent<Rigidbody2D>();
    }

——————-——————

3.有了rigidbody的数值,就可以更改rigidbody的速度

//定时刷新刚体的移动
    private void FixedUpdate()
    {
        Move();
    }

    //刚体速度的更改
    public void Move()
    {
        //用一个速度来替换当前的速度:x的速度为输入的方向*速度*时间的修正,需要设置x,y两个方向的float值,
        //y值为维持原来物理引擎的9.8的加速度的速度
        rb.velocity = new Vector2(inputDirection.x * speed * Time.deltaTime,rb.velocity.y);
    }

二.翻转

在这里插入图片描述

法一.(传统 )
对人物的翻转,可以通过自身数值的transform中的scale(从-1转变为1)

transform组件不需要get可以直接拿来用

public void Move()
    {
        //用一个速度来替换当前的速度:x的速度为输入的方向*速度*时间的修正,需要设置x,y两个方向的float值,
        //y值为维持原来物理引擎的9.8的加速度的速度
        rb.velocity = new Vector2(inputDirection.x * speed * Time.deltaTime,rb.velocity.y);

        //人物翻转 用transform实现,由于存在用手柄时候inputdirection.x出现小数的情况,故判断方向使用是否大于零

        //创建临时变量记录当前方向,此时x为float,用int强制转换
        int faceDir = (int)transform.localScale.x;

        //判断输入方向,更改facedir
        if (inputDirection.x>0)
            faceDir = 1;
        if (inputDirection.x < 0)
            faceDir = -1;

        transform.localScale = new Vector3(faceDir,1,1);
    }

法二.
对精灵图渲染器中的flip更改直接实现沿着锚点翻转(x或y)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值