canvas简单骨骼 笔记

news/2023/12/1 11:34:28

摘要

最近做了个H5项目。要求一个有骨骼的diy项目,一开始以为一定要用白鹭之类的那个骨骼之类的软件来写才可以,
后来找了很资料,试了很多方面,各种不行,本人愚笨,后来看一下有别人的一个h5,里面也有这样的功能,看了他的代码,我看他们好像也是自己写的,我也决定自己写。
用PIXIjs
好了,废话不多说,下面开始吧。

开始

我们从手的关节来说吧。
手可以看成三个点如图
图片描述
把这三个点连接起来,就一个三角形,三角形那我们就可以用三角形的数学知识了,现在我们有的是三个的长度
其中臂1 (下面用y0)和臂2(下面用y1)是知道固定长度,而线1(下面用cY)就点1点3的距离不固定长度,好了,现在三边都有了要把三边合成一个三角形,就是要三个角算出来,根据余弦定理
图片描述
看图可以得出

点1角=  Math.acos((y0 * y0 + cY * cY - y1 * y1) / (2 * y0 * cY));
点3角= -Math.acos((y1 * y1 + cY * cY - y0 * y0) / (2 * y1 * cY));

两个角加边合起来就是三角形了,知识点到这了。

技巧

上面我们说骨骼的就是一个三角形,那么要怎么画才比较容易呢,
每一个关节都用一个容器来存起来。

   var $container = new PIXI.Container();

把两个手臂画进来

   var branch = new PIXI.Sprite(that.getImgData(that.sex + index));

定好位,为了手臂连接起来,那么手臂最大值:y0+y1
上面说的是用户在cY里直接上线,那如果用户左右移动怎么办呢。

我们可以先记录touchstart时的当前cY角度,和touchmove的cY角度,那么我们可以把容器整体转动,再来算cY的长度,就可以得到手的弯曲角度,这样就成了简单的骨骼互动了。
4肢是都是同个原理,每个肢体都可以用一个容器包起来。这样方便控制.


http://www.niftyadmin.cn/n/4616833.html

相关文章

mysql 按小时分层_MySQL逻辑分层介绍

上一篇文章主要介绍了MySQL在Ubuntu18.04系统上的安装,以及安装过程中可能会遇到的一些问题的解决方案。在这篇文章里,开始介绍MySQL数据库的逻辑分层。通过本文的介绍,可以大致了解到MySQL的语句从客户端发出请求后,在服务器经历…

程序新人的一点感悟

1. 做好用户需求分析(User Requirement Analysis),一定要清楚用户需求,明确所要实现的功能,避免出现前后需求不一致、内容失实、遗漏、含糊不清和描述不一致等现象的发生。 2.实现阶段,要实现某一功能模块&…

ruby1.93 mysql.so_RUBY 安装 MYSQL

1.首先安装好MySql 最新的应该是5.02.下载ruby连接MySql 的so文件 在http://www.vandomburg.net/pages/mysql-ruby-windows-2.7.1.zip3.把mysql.so 放到ruby 的lib\ruby\site_ruby\1.8\i386-msvcrt下.4.把libmysql.dll (在MySQL的安装目录bin下)拷贝到ruby 的bin 下.又或1. 首…

做一个有business sense的技术人

有网友问我,为什么在我的blog上找不到我的简介,我想了想,没有简介的原因主要有以下两条:1,我也还不清楚自己的定位。按照目前我所从事的工作,显然应该算是一个technician,但是,年过三…

获取指定的内容列表-MXCMS ClassList标签

功能说明 获取指定的内容列表 ,可分页 适用范围 列表模板 基本语法 [NT:Loop,NT:SiteID0,NT:LabelTypeClassList,NT:ListTypeNews,NT:isSubtrue,NT:SubNewstrue,NT:Cols4, NT:Descdesc,NT:DescTypeid,NT:isDivfalse,NT:bfStr0|5|CSS,NT:isPictrue,NT:TitleNumer30,N…

Entity Framework 更新数据库

Entity Framework 更新数据库更新单个数据源更新多个数据源自动更新数据源更新单个数据源 在程序包管理器控制台中执行以下指令: // 启用合并 PM> Enable-Migrations -EnableAutomaticMigrations// 添加脚手架,当数据库服务为 Oracle 时&#xff0c…

5.7.20mysql修改密码_Mysql 5.7.20 无法修改密码解决办法

重装系统下载了Mysql 5.7.20版本 配置启动完成发现一直无法修改密码。首先使用 update user set passwordpassword(123456) where userroot; 命令修改,报错如下图:然后改用 update mysql.user set authentication_stringpassword(123) where userroo…

总结 xib

总结 其实,你完全不需要做一个 “艰难的决定”,你可以像 QQ 和微信那样,根据具体情况来选择性的使用 xib 和 storyboard。这里有我的一些建议: 对于复杂的、动态生成的界面,建议使用手工编写界面。对于需要统一风格的按…

德国罗森伯格成功布线宁波鄞州银行数据中心

宁波鄞州银行位于中国浙江省宁波市,鄞州银行是全国首家农村合作银行。1987年,经总行批准成为全国最早的农村信用联社之一;1998年,经原浙江省分行批准,成为沪、浙、闽地区首家实施一级法人核算管理试点的合作银行&#…

html头文件meta知多少(没事无聊哈)

记得以前某个包含页面要定时刷新一般都会写一个onload方法,如 window.onload function() { setTimeout("Refresh()",1000);//Refresh方法里比如是 window.location.href"xxx.aspx" } 上面那段放到head标签内就可以了 殊不知html的met…

别动,我们来聊聊区块链技术正经的商用场景!

**【众说区块链】本期的主题是:聊聊区块链落地应用的那些案例。**关于区块链的应用五花八门,有些是来割韭菜(比如ICO),有些是来蹭热点的(如区块链手机、区块链手表、区块链牙刷等),那…

Oracle 数据库导入

Oracle 数据库导入以 sysdba 身份登录创建表空间创建用户并授权导入数据以 sysdba 身份登录 C:\WINDOWS\system32> sqlplus / as sysdbaSQL> conn / as sysdba;创建表空间 SQL> create tablespace [表空间名称]2 logging3 datafile [数据文件存储路径]4 size 32m…

SVN 钩子 允许用户修改Subversion日志的钩子脚本(转)

我想用过Subversion的人一定有过这样的问题:“为什么不允许用户修改日志?”,因为这种改变不可还原(目前这个操作还没有受到版本控制 的管理),所以这项功能默认是被禁止的。如果要开启它,必须设置…

路由器常用命令总结

一、路由器的几种工作模式的转换<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1、用户模式怎么登录到特权模式&#xff1f;Enable2、特权模式怎么登录到配置模式&#xff1f;Configure terminal3、配置模式怎么退回到用户模式…

Docker Compose 操作

Docker Compose 操作创建 docker-compose.yml启动容器Docker Compose 管理Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。创建 docker-compose.yml consul:image: consulcommand: agent -server -bootstrap -ui -client0.0.0.0volumes:- /data/consul:/consu…

Microsoft System Center 2012 Virtual Machine Manager 部署过程

首先需要说明的是&#xff0c;这个部署的过程也是我借鉴了别人的博客来进行操作。期间遇到了一些问题&#xff0c;不知道该如何解决。也向几位博主来请教过。下面把我遇到的问题说明一下&#xff1a; 在我下载的时候&#xff0c;第一次下载的是 VMM SP1&#xff0c;是英文版的&…
最新文章