You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript实现Unity游戏开场文字垂直飞入动画?

实现文字垂直方向动画的解决方案

嘿,很高兴看到你在为Unity游戏打造开场动画!针对你想要的文字垂直方向动画效果,我们可以结合CSS动画和你的现有JavaScript逻辑来实现,这里提供两个实用的方案:

方案一:CSS过渡(Transition)实现简洁垂直滑入

这种方式简单易维护,适合需要平滑、基础的垂直移动效果。

1. 调整CSS样式

首先修改你的样式,让文字初始处于垂直偏移且透明的状态,移除hidden类时触发过渡动画:

.fly-in-text {
  list-style: none;
  padding: 0;
  margin: 0;
}

.fly-in-text li {
  display: inline-block;
  /* 初始状态:从下方50px位置开始,完全透明 */
  transform: translateY(50px);
  opacity: 0;
  /* 定义过渡动画的属性、时长和缓动曲线 */
  transition: transform 0.6s ease-out, opacity 0.6s ease-out;
}

/* 保持hidden状态下的文字初始位置 */
.fly-in-text.hidden li {
  transform: translateY(50px);
  opacity: 0;
}

如果想要文字从上方滑入,只需要把translateY(50px)改成translateY(-50px)即可。

2. 优化JavaScript触发逻辑

如果你想让每个字母依次动画(而非同时出现),可以把原来的统一移除hidden类改成逐个处理,增加层次感:

setTimeout(function() {
  const textLetters = document.querySelectorAll('.fly-in-text li');
  textLetters.forEach((letter, index) => {
    // 每个字母延迟100ms触发动画,可根据需求调整间隔
    setTimeout(() => {
      letter.classList.remove('hidden');
    }, index * 100);
  });
}, 1000);

对应的HTML需要给每个<li>添加hidden类,或者保持原有的<ul class="fly-in-text hidden",再调整CSS逻辑(比如把.fly-in-text.hidden li的样式应用到所有li,移除ul的hidden后li自动过渡)。


方案二:CSS关键帧动画(@keyframes)实现复杂效果

如果想要更生动的动画(比如轻微弹跳、变速等),可以用关键帧动画来定义更精细的运动路径:

1. 定义关键帧动画

@keyframes slideInVerticalBounce {
  0% {
    transform: translateY(50px);
    opacity: 0;
  }
  80% {
    transform: translateY(-5px); /* 滑到位置后轻微向上弹一下 */
    opacity: 1;
  }
  100% {
    transform: translateY(0); /* 最终回到正常位置 */
    opacity: 1;
  }
}

.fly-in-text {
  list-style: none;
  padding: 0;
  margin: 0;
}

.fly-in-text li {
  display: inline-block;
  opacity: 0; /* 初始透明 */
}

/* 触发动画的类 */
.fly-in-text li.animate {
  animation: slideInVerticalBounce 0.8s ease-out forwards;
  /* forwards属性让动画结束后保持最后一帧的状态 */
}

2. JavaScript触发动画

setTimeout(function() {
  const textLetters = document.querySelectorAll('.fly-in-text li');
  textLetters.forEach((letter, index) => {
    setTimeout(() => {
      letter.classList.add('animate');
    }, index * 120); /* 调整间隔控制动画节奏 */
  });
}, 1000);

这种方案下HTML不需要hidden类,初始<li>默认透明,添加animate类后自动播放动画。


额外小提示

  • 如果你想和Unity的加载状态同步(比如等游戏资源加载完成再播放动画),可以监听Unity WebGL的加载完成事件,替换固定的setTimeout(1000),避免动画提前播放。
  • 可以调整CSS中的transform值、动画时长(0.6s/0.8s)和缓动曲线(ease-out/ease-in-out等)来适配你的游戏风格。

内容的提问来源于stack exchange,提问作者Sam Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:44:25