独立开发也很多很多年头了.一直被身边的朋友吐槽我什么都不说
在csdn也有几个年头了.
最近又被一些国外友人吐槽我. 稀字如金
所信就借这个博客写点东西吧.哈哈这个也算是我人生的第一篇博文啊
好了.废话不表,进入正题.
===================我是分割线===================
这个想法最初来源于我为了实现游戏Claidia中的各种飘动摆动效果.但是由于Unity原生的似乎达不到我想要的那种可以随意控制.调整张力.重力.以及其他系数的功能.
所以一直在想说能不能通过DX11来实现.但是那样似乎效率上有些问题.流畅度可能达不到一个游戏的运行标准.毕竟一个大型MMO单帧画面渲染全屏用户至少要保证100个动态单位吧.
所以对效率还是有一定要求的.因此在为了保证效率和质量的情况下.一次玩某款日本的游戏的时候从中得到灵感.
下面上代码
整套动力系统模拟由一个主管理类和每个分节点受力计算类控制
首先主管理类:
PhysicalDynamicsSystem.cs
using UnityEngine;
using System.Collections.Generic;
namespace DIYPhySys
{
public class PhysicalDynamicsSystem : MonoBehaviour
{
static PhysicalDynamicsSystem PDManager;
public float dynamicRatio = 1.0f;
public Transform Bip;
public float stiffnessForce;
public AnimationCurve stiffnessCurve;
public float dragForce;
public AnimationCurve dragCurve;
public List<DynamicsBone> dynamicsBones = new List<DynamicsBone>();
public bool SetOnce;
public bool AllTest;
void Awake(){PDManager = this;}
public static PhysicalDynamicsSystem GetSpmm() { return PDManager; }
void Start ()
{
dynamicsBones.Clear();
DynamicsBone[] dbs = Bip.GetComponentsInChildren<DynamicsBone>();
for (int i = 0; i < dbs.Length; i ++)
{
if (AllTest)
{
dbs[i].stiffnessForce = stiffnessForce;
dbs[i].dragF