unity从0开始摸鱼日记15,继续增加功能

本文详细介绍了使用Unity进行游戏开发时,如何实现小球在高速移动时的视觉变形效果,以及在特定操作下减缓时间的游戏体验优化。作者通过调整小球的localScale和利用Quaternion实现精准的朝向变化,解决了斜向运动时的变形问题。同时,还分享了在蓄力时通过修改time.timeScale来改善玩家瞄准体验的方法。

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

3月28日

今天去吃了一顿大渝火锅,属实舒服

准备继续完善小球的视觉效果,在高速移动时改变小球形状,发射时时间减慢

变形这部分,我首先就想到在update中加一个函数,根据速度调节形状

初版本是这样的:首先这个函数要在fixedupdate中执行,不然帧数不够会导致卡顿,在每次update的最后获取一次物体的速度,这样下次执行变形函数的时候可以调用前一帧的物体速度,然后获取这一帧的速度,对他们的绝对值作差,x,y轴的差作为localscale的参数传进去,实现变形

代码如下:

 private void changeCricle()
    {
        float bx = System.Math.Abs(beforeVelocity.x);
        float by = System.Math.Abs(beforeVelocity.y);
        float nx = System.Math.Abs(rb.velocity.x);
        float ny = System.Math.Abs(rb.velocity.y);


        float x = (nx-bx)*0.5f;
        float y = (ny-by)*0.5f;
        transform.localScale += new Vector3(x, y, 0)*0.01f;
    }

但是发现这样有一个问题,只有在垂直或者水平运动时效果显著,在斜向运动时没有什么效果,并且因为在加速运动时只有增量,没有减量,就造成xy轴都增大,小球的体积都增大了,就很不合理,需要找别的方法

我想到的是,在fixedupdate中,时刻将小球的朝向指向运动的方向,这样只需要在运动的方向增大x轴并减小y轴就行

但是这个旋转,好难,要把xy坐标转换成z轴角度

最终还是让我给研究出来了吧!!崽种!!

if (!Input.GetKey(KeyCode.Mouse0))
        {
            Vector3 v = new Vector3(rb.velocity.x, rb.velocity.y, 0);
            //首先获得目标方向
            float angle = Vector3.SignedAngle(Vector3.up, v, Vector3.forward);
            //得到围绕z轴旋转的角度
            Quaternion rotation = Quaternion.Euler(0, 0, angle);
            //利用角度得到rotation
            transform.rotation = rotation;
         }

在速度过小的时候因为反弹的原因会导致反复抖动,所以在if中添加最小速度限制

接下来,准备在蓄力时时间减慢,便于瞄准,这个简单,在按下和松开的判定中分别添加time.timescale的设置就行

已经11点了吗

那就先这样吧

哦,还有准备调节一下fixupdate,让游戏更加流畅一点,毕竟我有时间减缓

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值