独立游戏开发(十一)-- 盾效果的优化以及sprite和游戏实际像素的对应关系

上一节我们实现了盾的效果,但看起来不是很完美,今天终于搞明白是怎么回事了。
在这里插入图片描述
我找的图片都是128*128像素的,但游戏里面每单位是100像素。当我们用游戏中的单位来用到图片上时,始终是有偏差的。
既然知道了原因,那就好办了,有2个方法,第一个就是将PixelsPerUnit的值设置成图片的像素值,比如我这里设置成128;但因为我美术,鬼知道找的图片是多少像素的,一个个调整太烦了,所以我这边采取第二个方法,手动转换得到一个值。
那我们先来优化一下盾的表现;

/// <summary>
/// 适配sprite
/// </summary>
private void AdapterSprite()
{
    InitTrans();
        
    float diameter = _itemActionData.Radius * 2;
    var rateX = diameter / _bgSprite.bounds.size.x;
    var rateY = diameter / _bgSprite.bounds.size.y;
    _transform.localScale = new Vector3(rateX, rateY, 1);
}

spriterender中的bounds已经为我们计算好了比率,那我们就可以直接来用实际的长度和这个做比较。
我们来看一下效果:
在这里插入图片描述
看起来舒服多了,完完全全贴合我们盾的一个边界。
这边还有一个判断点是否在圆内的方法也优化了一下。

/// <summary>
///  是否在目标范围内
///  平方算比开方节省
/// </summary>
private bool IsInTargetRadius(Vector3 target, float targetRadius)
{
    float length = _virusData.Radius + targetRadius;
            
    return (_transform.position - target).sqrMagnitude < length * length;
}

总结:今天的主要工作还是优化盾效果的表现,打磨的精细一点,这样看起来才舒服。接下来的工作可能就会很细了,因为还是想把游戏做好,所以实现一个功能可能会花几篇的时间,后面的话就要去实现一个爆炸的效果了。

传送门:独立游戏开发–索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值