mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
jump anim, quad med
This commit is contained in:
parent
5008dba413
commit
ed9de26f27
@ -152,7 +152,9 @@ impl Animation for MountAnimation {
|
||||
next.lantern.orientation = next.hand_r.orientation.inverse()
|
||||
* Quaternion::rotation_x(fast * 0.1)
|
||||
* Quaternion::rotation_y(fast2 * 0.1);
|
||||
}
|
||||
} else {
|
||||
next.lantern.position = Vec3::new(s_a.lantern.0, s_a.lantern.1, s_a.lantern.2);
|
||||
};
|
||||
|
||||
next.glider.position = Vec3::new(0.0, 0.0, 10.0);
|
||||
next.glider.scale = Vec3::one() * 0.0;
|
||||
|
@ -6,7 +6,7 @@ use super::{
|
||||
pub struct JumpAnimation;
|
||||
|
||||
impl Animation for JumpAnimation {
|
||||
type Dependency<'a> = f32;
|
||||
type Dependency<'a> = (f32, Vec3<f32>, Vec3<f32>);
|
||||
type Skeleton = QuadrupedMediumSkeleton;
|
||||
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
@ -15,7 +15,7 @@ impl Animation for JumpAnimation {
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_medium_jump")]
|
||||
fn update_skeleton_inner<'a>(
|
||||
skeleton: &Self::Skeleton,
|
||||
_global_time: Self::Dependency<'a>,
|
||||
(_global_time, velocity, avg_vel): Self::Dependency<'a>,
|
||||
_anim_time: f32,
|
||||
_rate: &mut f32,
|
||||
s_a: &SkeletonAttr,
|
||||
@ -33,38 +33,62 @@ impl Animation for JumpAnimation {
|
||||
next.foot_bl.scale = Vec3::one() * 0.96;
|
||||
next.foot_br.scale = Vec3::one() * 0.96;
|
||||
next.ears.scale = Vec3::one() * 1.02;
|
||||
let speed = Vec2::<f32>::from(velocity).magnitude();
|
||||
let velocityalt = speed.max(1.0);
|
||||
let normalize = velocityalt / 22.0;
|
||||
|
||||
let x_tilt = (avg_vel.z.atan2(avg_vel.xy().magnitude()) * normalize).max(-0.35);
|
||||
let x_tilt = if velocityalt < 2.0 {
|
||||
x_tilt.abs()
|
||||
} else {
|
||||
x_tilt
|
||||
};
|
||||
println!("{} days", x_tilt);
|
||||
|
||||
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1);
|
||||
next.head.orientation = Quaternion::rotation_x(x_tilt * -0.5);
|
||||
|
||||
next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1);
|
||||
next.neck.orientation = Quaternion::rotation_x(x_tilt * -1.0);
|
||||
|
||||
next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1);
|
||||
next.jaw.orientation = Quaternion::rotation_x(0.0);
|
||||
|
||||
next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1);
|
||||
next.tail.orientation = Quaternion::rotation_x(-0.6 * normalize + x_tilt * 2.0);
|
||||
|
||||
next.torso_front.position = Vec3::new(0.0, s_a.torso_front.0, s_a.torso_front.1);
|
||||
next.torso_front.orientation = Quaternion::rotation_y(0.0);
|
||||
next.torso_front.orientation = Quaternion::rotation_x(x_tilt * 1.9);
|
||||
|
||||
next.torso_back.position = Vec3::new(0.0, s_a.torso_back.0, s_a.torso_back.1);
|
||||
next.torso_back.orientation = Quaternion::rotation_x(x_tilt * -1.2);
|
||||
|
||||
next.ears.position = Vec3::new(0.0, s_a.ears.0, s_a.ears.1);
|
||||
next.ears.orientation = Quaternion::rotation_x(x_tilt * 1.5);
|
||||
|
||||
next.leg_fl.position = Vec3::new(-s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2);
|
||||
next.leg_fl.orientation = Quaternion::rotation_x(1.2 * normalize + x_tilt * 0.8);
|
||||
|
||||
next.leg_fr.position = Vec3::new(s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2);
|
||||
next.leg_fr.orientation = Quaternion::rotation_x(1.2 * normalize + x_tilt * 0.8);
|
||||
|
||||
next.leg_bl.position = Vec3::new(-s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2);
|
||||
next.leg_bl.orientation = Quaternion::rotation_x(-0.8 * normalize + x_tilt * -0.8);
|
||||
|
||||
next.leg_br.position = Vec3::new(s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2);
|
||||
next.leg_br.orientation = Quaternion::rotation_x(-0.8 * normalize + x_tilt * -0.8);
|
||||
|
||||
next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2);
|
||||
next.foot_fl.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
|
||||
|
||||
next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2);
|
||||
next.foot_fr.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
|
||||
|
||||
next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2);
|
||||
next.foot_bl.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
|
||||
|
||||
next.foot_br.position = Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2);
|
||||
next.foot_br.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
|
||||
|
||||
next
|
||||
}
|
||||
|
@ -1989,7 +1989,7 @@ impl FigureMgr {
|
||||
(false, _, false) => {
|
||||
anim::quadruped_medium::JumpAnimation::update_skeleton(
|
||||
&QuadrupedMediumSkeleton::default(),
|
||||
time,
|
||||
(time, rel_vel, rel_avg_vel),
|
||||
state.state_time,
|
||||
&mut state_animation_rate,
|
||||
skeleton_attr,
|
||||
|
Loading…
Reference in New Issue
Block a user