🐟「Sakana!」石蒜模拟器
地址 https://lab.magiconch.com/sakana/
さかなー---!!
日本語リードミー docs/ja/README.md #53 @OHMORIYUSUKE
支持引入多个模拟器了! 约会版
已从老师推特取得在网页中使用两张插画 (
その1、その2
) 的非商用授权
ヾ(^▽^ヾ)
?v=chisato
请求参数,可获得 锦木千束 专属链接?v=takina
请求参数,可获得 井上泷奈 专属链接?alpha=true
请求参数,可获得透明背景 例
?background=red
请求参数,可自定义背景 #FF00FF
'#d77 url(chisato.png)'
均可 例
?decay=0.99
请求参数,自定义衰减 无阻尼例 #11
?inertia=0.1
请求参数,自定义惯性 超慢速例
?lang=en-US
请求参数,自定义语言 英文 日语
?scale=auto
请求参数,在小尺寸时适应高度调整缩放?scale=0.5
请求参数,自定义元素缩放比例?translateY=200px
请求参数,自定义元素垂直位移?r=60
请求参数,初始角色右倾 60 度?y=100
请求参数,初始角色下沉 100 单位<div class="sakana-box"></div>
<script src="https://cdn.jsdelivr.net/npm/sakana"></script>
<script>
Sakana.init({
el: '.sakana-box', // 启动元素 node 或 选择器
scale: .5, // 缩放倍数
canSwitchCharacter: true, // 允许换角色
});
</script>
npm i sakana -d
import Sakana from 'sakana';
Sakana.init({
el: '.sakana-box', // 启动元素 node 或 选择器
scale: .5, // 缩放倍数
canSwitchCharacter: true, // 允许换角色
});
// 设定静音
Sakana.setMute(true);
// 获取静音状态
const { isMute } = Sakana.Voices;
// 启动
const sakana = Sakana.init({
// 选项: 默认值
el: '.sakana-box', // 启动元素 node 或 选择器
character: 'takina', // 启动角色 'chisato','takina'
inertia: 0.01, // 惯性
decay: 0.99, // 衰减
r: 60, // 启动角度
y: 10, // 启动高度
scale: 1, // 缩放倍数
translateY: 0, // 位移高度
canSwitchCharacter: false, // 允许换角色
onSwitchCharacter(character){ // 切换角色回调
console.log(`${character} dayo~`);
},
});
// 设定归零角度
sakana.setOriginRotate(10);
// 获取角色运行状态
const v = sakana.getValue();
// 确保运行
sakana.confirmRunning();
// 切换角色
sakana.switchCharacter();
// 暂停动作
sakana.pause();
// 恢复动作
sakana.play();
// 切换特定角色
sakana.setCharacter('chisato');
html .sakana-box{
position: fixed;
right: 0;
bottom: 0;
transform-origin: 100% 100%; /* 从右下开始变换 */
}
.less
需要编译成 .css
样式文件 #6
npm i
npm run build
https://github.com/itorr/sakana/
https://weibo.com/1197780522/M2xbREtGI
Copyright (c) 2022, itorr