Web可编辑的贝塞尔曲线 easing 函数

Posted on Fri 26 November 2021 in 游戏开发

网站:

https://cubic-bezier.com/#.34,1.56,.85,1.31

img

或 https://codepen.io/osublake/pen/OyPGEo

img

再使用这个脚本生成Easing函数

https://gist.github.com/OSUblake/4d9f0caf980f4ee492ef

img

用法:

TweenLite.to(path, 2, { ease: CubicBezier.config(1, 2, 3, 4) });


已知固定初速和落点的火炮抛物线计算

Posted on Wed 17 November 2021 in 游戏开发

应用于以下场景

一门火炮在高度h2,目标在高度0

火炮开火后,弹药初速度固定为v0,求此弹道公式。

答案

已知 l (发射距离),h2(起点高度差),v0标量速度

img

wolframalpha

这个公式的解析解为

img

转换为代码:

let gravity = 9.8;



function posCalc(endX: number, x: number, h = 0) {

  const v0 = 13;

  let l = endX;

  let g = gravity;

  let h2 = h;

  let angle = Math.acos(Math.sqrt(-Math.sqrt(0 - l …

Continue reading

Android 渠道包几种技巧

Posted on Tue 02 November 2021 in 游戏开发

1. 架构

建议的架构是,游戏本体作为一个library module,每一个渠道作为一个app module,这样较为简单。

img

2. 编译缓慢

给gradle换国内源

    repositories {
        maven{ url'https://maven.aliyun.com/repository/google' }
        maven{ url'https://maven.aliyun.com/repository/public' }
    }

3. 命令行传入编译参数

gradlew :app:buildRelease -Papp_name=我的游戏

项目的总build.gradle中写

ext {
    app_id = project.hasProperty("app_id") ? project.property('app_id') : 'com.example.laya_template'
    app_name = project …

Continue reading

Laya粒子与Unity的一点不同

Posted on Tue 26 October 2021 in 游戏开发

1. 当多个粒子呈现父子关系,父节点的play并不会影响子节点,这和unity不同。

laya

LayaAir/ShurikenParticleSystem.ts at master · layabox/LayaAir (github.com)

unity:

Unity - Scripting API: ParticleSystem.Play (unity3d.com)

2. 而laya粒子节点从场景树上remove之后再addChild又会重新播放,是因为:

LayaAir/ShuriKenParticle3D.ts at 23ec5dc957ac9de14d2bde9eca6673dde7e0d4cc · layabox/LayaAir (github.com)

/**

* @inheritDoc

* @override

* @internal

*/

_activeHierarchy(activeChangeComponents: any[]): void {

​ super._activeHierarchy(activeChangeComponents);

​ (this.particleSystem.playOnAwake) && (this.particleSystem.play …


Continue reading

unity 物体/预设截图

Posted on Thu 29 July 2021 in 游戏开发

日常工作中,经常会遇到需要截图一大堆预设给美术,用于商店、物品图标等场合。

可以使用这个脚本去解决截图问题:

https://gist.github.com/mickdekkers/5c3c62539c057010d4497f9865060e20

https://gist.github.com/fy0/6f5c4ca0e478a96958d94ec9c9b1b4a5 (自己fork一份防止删除)

使用这个脚本需要下载他的 snapshot-camera-demo.zip,然后将Scripts下的

SnapshotCamera.cs、SnapshotCameraTest.cs、SnapshotCameraTestEditor.cs添加进你的项目

举例来说,比如我们要截图的场景有三个物体:

img

img

将SnapshotCameraTest作为Component添加给场景中随便一个对象

img

运行场景,拖动场景中game object到 Object to Snapshot 就可以预览截图。

img

img

img

这时候敲空格键可以保存文件截图,注意是一次一个

img

截图同时会打log

img

图默认是512x512,正交视图,透明底色,符合大部分要求,可以在脚本中定制。

img

参考SnapshotCameraTest代码稍微写一个小脚本,就可以实现批量截图了。


Cascadeur 骨骼绑定简单入门笔记

Posted on Sat 24 July 2021 in 游戏开发

Cascadeur 是一个人物动画的工具。

导入一个模型之后,首先要进行骨骼的绑定。

有两种绑定方式,一种是Rigging tool,一种是Quick rigging tool。

img

先说结论:必须使用 Quick rigging tool,因为不用的话不能使用Auto-Posing,用这软件意义就小了很多。

但是Quick rigging tool生成的绑定经常有问题(例如膝盖反了),所以建议先走一遍Rigging tool的绑定流程,这样你就能知道哪里出了问题,从而手动修复。

绑定流程的话参考这个视频:

https://www.youtube.com/watch?v=w7zO7yObD6c

因为是旧版本所以略有不同。主要一个是在于镜像(Mirror)方式变了。当前版本的镜像方式是这样的:

img

随意框选一下绑好的骨骼,随后左侧填写好参数,点击“Create mirror object”即可。

然后就是这个样子。

img

另外视频最后一部分是关于权重和物体质量的,这个了解下操作方式和代表意义即可,不用真的做一遍,因为后面 …


Continue reading

Unity 人物动画转换 - humanoid / generic 互转

Posted on Thu 22 July 2021 in 游戏开发

前言

先说说什么是humanoid,还有为什么要做转换。

首先,现在常用的人物模型,虽然人物的骨骼和命名不尽相同,但都提供了一组通用的数据来表明人形身体上某些固定的部位分别对应什么骨骼。unity可以读取这组数据来完成自动的rig绑定。

因此拥有humanoid数据的人物模型,即使所有骨骼的名字都不同,人物动作也可以共用。

其次,为什么做转换?

第一个是一些使用unity为工具链的引擎,例如laya只支持generic动画,所以要转换。

第二个是一些软件修改模型会导致humanoid数据丢失变成了generic类型,但是你又想套用一些humanoid动画上去,所以就要拿未丢失humanoid数据的模型给那些动画做一个转换。

具体操作

需要插件 Animation Converter

需要两个相同骨骼的FBX模型(可以是同一个复制两份)。

第一个FBX模型的Animation设置为Humanoid(需要从3D软件导出时带Humanoid信息)。

第二个设置为Generic。

img

打开转换器,先将这两个模型拖到最底下的Input和output,然后修改Output中的选项,并将需要转换的动作拖进Input。

img

最后点击Convert即可,转换后的动画会输出在Output Directory目录。