unity 一个人物越跑越快的例子


游戏中,人物如果需要的效果是越跑越快,

那么,需要用到的,就是加速度的知识。

我们一起来看一下 具体实现的代码,


private float mainPlayerSpeed = 8;//动画速度1 时, 人物前进的速度

private float accSpeedEachSecond = 8;

private float accTimeCount = 0;

private float mainPlayerBeginSpeed = 0;

private float currentSpeed = 0;

private float playerMaxSpeed = 32;


void Start () {

mainPlayerBeginSpeed = 8;

currentSpeed = mainPlayerBeginSpeed;

accTimeCount = 0;
}
// Update is called once per frame
void Update () {

if (currentSpeed < playerMaxSpeed) 
{
accTimeCount += Time.deltaTime;

currentSpeed = mainPlayerBeginSpeed + accTimeCount * accSpeedEachSecond;

if(currentSpeed >= playerMaxSpeed)
{
currentSpeed = playerMaxSpeed;
}
mainPlayerAnimator.speed = currentSpeed/mainPlayerSpeed;

这里,

我们可以先让游戏放慢,

让人物以一倍速的方式奔跑,

我们为其先设定一个前进的速度,

例如,刚开始让其 一秒钟移动 1,

之后我们可能会感觉 人物跑的太慢了,

我们可以再加一倍,再次测试,

一般来说,一个人物的高度,算是一米七五左右,

这个算是比较平均的身高,

世界记录的保持者,百米也需要将近十秒,

也就是说,现实生活中,人类以 十秒每米的速度奔跑就差不多是极限了,

但是游戏可以适当的夸张一点,

我们先调整一个在慢速的情况下,感觉比较自然的效果,

这个需要来回调整多次找到一个标准,

假如,人物一秒钟摆臂两次,速度是 4米每秒,

那么,当人物以8米每秒的速度奔跑时,他一秒钟差不多应该是摆臂四次,

为什么?

因为人的步长基本是不会变化很大的,但是奔跑的迈步频率却可以变化很大。

遵循这个原则,当人物的奔跑速度变快时,人奔跑时播放的动画速度,也应该变快,
mainPlayerAnimator.speed = currentSpeed/mainPlayerSpeed;

另外,人的奔跑速度是有极限的,

游戏中,也应该设定极限,

if(currentSpeed >= playerMaxSpeed)
{
currentSpeed = playerMaxSpeed;
}

通过物理学的知识,

现在,我们只需要修改人物的加速度,就可以调整速度的变化快慢了。


游戏中,人物如果需要的效果是越跑越快,

那么,需要用到的,就是加速度的知识。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值