笔记-2.带尾巴小球弹跳

先说尾巴跟随:

尾巴跟随是典型的运动跟随,随着根部的运动,尾巴的每部分自然而柔软地跟随运动,中间帧不能出现直挺挺的尾巴这种不自然的状态,也不能出现僵硬的运动。

具体实现:

可以通过一个个中间帧调节尾巴不同部分来达到自然柔软的效果,但对于尾巴跟随运动最简单的是拖帧法,即从根部到尾部按顺序少选一个控制器,将关键帧依次向后拖动几帧(就是让尾巴从根部向尾部的运动变化依次向后慢几帧出现)。

运动曲线是这样的:

可以拖动曲线让根部摆动幅度小些:

同理可以再做出尾巴其他方向的摆动

-------------------------------------

小球运动带动尾巴运动:

小球运动,比如小球跳跃,带动尾巴上下摆动,尾巴摆动的最大幅度不是在小球跳跃的最高点,而是在跳起/落下的中间过程中,并且一直伴随着根部带动尾部的跟随运动(拖帧法实现,最后要把尾巴摆动的所有关键帧一起向前拖几帧,使得尾巴运动能和小球发力、跳起、落下的运动保持一致的节奏)。

--------------------------------------

球体和尾巴的缓冲:

球体缓冲,关注两个方向的运动-跳跃方向和形变方向,注意这两个的运动曲线,在落地点后交替K帧,表现出小球在两个轴向上有错落的缓冲变化;

尾巴缓冲,在小球缓冲运动形变的最高/最低点的那两个帧位附近,给尾巴整体k2、3帧,表现出尾巴的前后稍微的缓冲摆动,然后用拖帧法达到尾部跟随,最后调整尾巴各部分的帧位和摆动幅度,使得尾巴伴随球体缓冲,伴随球体静止而静止。

========================================

角色运动的软度硬度表现,取决于运动跟随的幅度,跟随运动幅度越大表现出来就是越软。

时间: 2024-10-11 16:57:11

笔记-2.带尾巴小球弹跳的相关文章

小球弹跳

知乎上看到一个小球弹跳的代码,觉得挺有意思的,就打出来自己看看 https://zhuanlan.zhihu.com/p/24633092 #include<stdio.h>//上下跳动#include<stdlib.h>int main(){    int i,j;    int x=5,y=10;//小球坐标    int h=20;//高度    int v=1;//速度    while(1)    {        x=x+v;//坐标=坐标+速度        syst

小球弹跳递归

将一个小球从100米抛下,假设它每次弹起之前一半的高度,求小球弹跳总高度和弹跳高度 /** * @author Administrator jie * @param count 弹跳次数 * @return 返回第count次弹起的高度 */ public static double high(int count){ if(count==1){return 50;} return high(count-1)/2; } /** * * @param count 弹跳次数 * @return 第co

【安卓笔记】带自定义属性的view控件

开发中经常需要自定义view控件或者组合控件,某些控件可能需要一些额外的配置.比如自定义一个标题栏,你可能需要根据不同尺寸的手机定制不同长度的标题栏,或者更常见的你需要配置标题栏的背景,这时候,你就会考虑到你写的view的扩展性问题,通常情况下,我们可以为这个自定义的标题栏加上一些setXXX方法,供外界调用,设置其颜色.长度等属性.但是我们都知道,在使用系统控件时,我们大多数情况下并不需要在代码中配置控件,而仅仅只需在布局文件中对控件宽.高.颜色等进行配置,这样做的好处就将UI与业务逻辑解耦,

读书笔记&lt;&lt;不懂带人,你就自己干到死&gt;&gt;

在进入职场这几年,起初一直被人管,后来也带几个人一起做项目,没有学过怎么带人,遇到问题的时候一般就想想自己的老大是怎么带自己的,上一个项目做到累的半残,除了项目本身催人命以外,没有好好把人带起来可能也是问题之一,看到这本书的时候在想是不是也要好好学学怎么带人了呢. 英文书名为The solution Tango Seven simple steps to solutions in management,中文的书名有种哗众取宠的既视感,然而内容还是不错的. 从传统的管理模式采用的因果关系模式说起:

阿花宝宝 Java基础笔记 之 带参方法

一,带参方法1.如何定义带参方法<访问修饰符> 返回类型 <方法名>(<参数列表>){ //方法的主体}访问修饰符:public protected private 返回值类型:    无返回值:void  方法体内没有return    有返回值:数据类型(int,double,String 等) 方法体内必须有return,并且 return后的值的数据类型要跟定义方法时的一致. 参数列表:列表中各参数间以逗号分隔,每个参数由一个数据类型和一个标识符名组成2.带参方

笔记-3.路径动画+小球闯关练习

教程: 让模型(如小球)沿着已有路径(如曲线)运动的方法: 按住shift,选中小球的总控再选中曲线,然后动画-运动路径-连接到运动路径-开始/结束,可以调节小球沿着曲线运动的开始和结束时间; 选中小球总控,通道盒-输入-motionPath,选中U值中键改变该值/直接输数字,可以让小球在路径上加速/减速:前/上/侧方向扭曲可以让小球按不同方向旋转,属性上点右键-为选定项设置关键帧,可以给小球的旋转运动k帧. 连接到运动路径 motionPath 让模型离开路径: 时间滑块到在小球路径运动结束那

Android学习笔记(25):带动画效果的View切换ViewAnimator及其子类

ViewAnimator可以实现带动画效果的View切换,其派生的子类是一些带动画效果切换功能的组件. ViewAnimator支持的XML属性: Attribute Name Description android:animateFirstView 设置显示第一个View组件时是否使用动画 android:inAnimation 设置显示组件时使用的动画 android:outAnimation 设置隐藏组件时使用的动画 1. ViewSwitcher视图切换组件. 添加视图的方法: 由Vie

HTML5 Canvas 图像动画的实现(实例小球弹跳)

Canvas 中 clearRect 清除函数 var c=document.getElementById("php100"); var p100=c.getContext("2d"); p100.clearRect(x,y,x,y) // 擦除画布一个区域x-y.x-y ------ 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <

Go中常用包笔记 bufio:带缓冲的IO操作/SCANNER(二)

Package bufio 提供可缓存的IO访问   Scanner:    func NewScanner(r io.Reader) *Scanner //构造函数    func (s *Scanner) Buffer(buf []byte, max int) //指定使用的缓冲区    func (s *Scanner) Split(split SplitFunc) //设定切割函数 使用四个切割器    func (s *Scanner) Scan() bool  //扫描    fun