Game Development

dylantarre/animation-principles/skills/01-by-domain/game-development

作者 dylantarre83597134ba8f无许可证99 个星标收录于 2026年10月8日更新于 2026年10月8日仓库9个月前更新

Use when implementing game animations, player feedback, character movement, or interactive entertainment in Unity, Unreal, or other game engines.

AI 生成的概览

将迪士尼12项动画原则应用于游戏引擎中的游戏动画、玩家反馈与角色移动。

功能
该技能通过把迪士尼12项动画原则映射到引擎层面的技术,为游戏动画与交互手感的实现提供指导。内容涵盖挤压与拉伸、预备动作、舞台调度、跟随与重叠、缓入缓出、弧线、次要动作、时间节奏、夸张、扎实的绘画和吸引力,并逐项给出简要说明。它还包含Unity与Unreal的引擎实现示例,以及攻击、跳跃和闪避的帧数据时间参考。产出的是建议性指导与代码片段,而非文件或脚本。
适用场景
适用于在Unity、Unreal或类似引擎中实现或调整游戏动画、角色移动、打击反馈或互动娱乐时。也适合处理动画曲线、命中停顿、攻击帧数据和可读的玩家反馈等工作。
运行要求
不包含脚本或素材,仅为说明性指令。示例涉及Unity(C#)与Unreal(C++),应用时需要有相应的游戏引擎项目。

Game Development Animation

Apply Disney's 12 animation principles to game engines, player feedback, and interactive entertainment.

Quick Reference

PrincipleGame Implementation
Squash & StretchCharacter deformation, impact frames
AnticipationWind-up animations, charge indicators
StagingCamera focus, environmental cues
Straight Ahead / Pose to PoseProcedural vs keyframed animation
Follow Through / OverlappingCapes, hair, weapon trails
Slow In / Slow OutAnimation curves, attack/recovery
ArcProjectile paths, jump trajectories
Secondary ActionParticles, screen shake, audio sync
TimingFrame data, hit-stop, response windows
ExaggerationStylized movement, hit reactions
Solid DrawingConsistent silhouettes, read at distance
AppealCharacter personality, satisfying feedback

Principle Applications

Squash & Stretch: Deform characters on landing impact. Stretch during fast movement. Impact frames freeze and squash for power. Keep volume consistent in deformation.

Anticipation: Attack wind-ups telegraph to players. Jump squats before leaving ground. Charge attacks show buildup. Enemy tells warn of incoming damage.

Staging: Camera frames important action. Environmental lighting guides attention. Enemy placement creates readable combat scenarios. UI doesn't obscure critical gameplay.

Straight Ahead vs Pose to Pose: Procedural animation (ragdoll, physics) is straight ahead. Keyframed attack combos are pose to pose. Blend both—keyframed base with procedural secondary motion.

Follow Through & Overlapping: Secondary elements (hair, cloth, tails) continue after body stops. Weapon trails persist after swing. Landing recovery extends past initial impact.

Slow In / Slow Out: Use animation curves—never linear for character motion. Attack startup fast-out, recovery slow-in. Ease jumps at apex for floatiness control.

Arc: Jumping follows parabolic arc. Sword swings trace curved paths. Projectiles arc naturally unless hitscan. Dodge rolls curve rather than linear translate.

Secondary Action: Screen shake on impact. Particle bursts on hits. Controller rumble synced to action. Sound design reinforces visual timing.

Timing: Hit-stop (freeze frames) emphasizes impact—2-5 frames typical. Attack startup/active/recovery frame data matters for game feel. Response to input under 100ms.

Exaggeration: Game animation reads at distance and speed. Exaggerate poses 20-30% beyond realistic. Hit reactions more dramatic than physics would suggest. Stylization serves clarity.

Solid Drawing: Silhouettes must read at all zoom levels. Consistent character proportions across animations. Strong poses at keyframes. Avoid tangent lines that confuse form.

Appeal: Characters have personality in idle animations. Movement feels satisfying independent of mechanics. Players should enjoy watching their character move.

Engine Patterns

Unity

csharp
// Squash and stretch on landingIEnumerator LandingSquash() {    transform.localScale = new Vector3(1.2f, 0.8f, 1.2f);    yield return new WaitForSeconds(0.05f);    // Ease back to normal    float t = 0;    while (t < 1) {        t += Time.deltaTime * 8f;        transform.localScale = Vector3.Lerp(            new Vector3(1.2f, 0.8f, 1.2f),            Vector3.one,            EaseOutElastic(t));        yield return null;    }}
// Hit-stop for impactIEnumerator HitStop(int frames) {    Time.timeScale = 0f;    for (int i = 0; i < frames; i++)        yield return null;    Time.timeScale = 1f;}

Unreal

cpp
// Animation curve for easingUPROPERTY(EditAnywhere)UCurveFloat* JumpArcCurve;
// Apply curve to movementfloat CurveValue = JumpArcCurve->GetFloatValue(NormalizedTime);

Timing Reference

Action TypeStartupActiveRecovery
Light attack3-6f2-4f8-12f
Heavy attack12-20f4-8f16-24f
Jump3-4f--4-6f
Dodge2-4f8-12f6-10f

Frame data at 60fps. Adjust for target framerate.

来源与署名

来源:dylantarre/animation-principles位于skills/01-by-domain/game-development提交8359713

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架