如何用C语言做PONG游戏,[Unity 3d] 如何优雅的写一个PingPong效果

PingPong效果在 Unity 真的是随处可见:来回运动啦,呼吸灯啦,活塞运动啦,渐隐渐显啦,今天笔者就用两种方式教大家写下这个简单而常见的动画效果。

1. DoTween

借助Dotween,我们的PingPong真的可以简单到爆炸:

//在Dotween 这种动效叫yoyo(悠悠球模式)

transform.DOScale(2, 2).SetLoops(-1, LoopType.Yoyo);

效果如下:

8c4a2215b5a0

并不是说 Dotween 的Pingpong只能做这个 Scale 的呼吸效果,其实还可以做好多好多就不一一列举啦

2. 写算法(假装是一个算法)

有时候,不想引入插件,那就这么写,极简且优雅。

public float factor = 1; //时间缩放因子,决定了 PingPong的周期

public event Action PingPong; //事件,订阅以驱动游戏对象 PingPong

float progress = 0;

bool addition = true;

void Update()

{

progress += (addition ? 1 : -1) * Time.deltaTime * factor;

progress = Mathf.Clamp01(progress);

//嵌套三目运算做状态反转

addition = progress == 1 ? false : progress == 0 ? true : addition;

//驱动订阅者

PingPong?.Invoke(progress);

}

怎么使用呢,像这样:

private void Start() //测试嘛,在同一个类里写下

{

factor = 0.5f; //等效2s

PingPong = v =>

{

transform.localScale = Vector3.one + Vector3.one * v;

};

}

效果跟上面的动图是一模一样的,就不再次贴了。

有人说,人家 Dotween 还有 Ease 缓动效果可以选择,其实咱们写的也可以引入 Ease 哟!

那怎么实现给PingPong加Ease呢?感兴趣的可以看看扩展阅读...

扩展阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值