Unity笔记:Make Character Bone2D

Posted 代码骑士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity笔记:Make Character Bone2D相关的知识,希望对你有一定的参考价值。

目录

1、创建新项目

2、检测一下是否具有2d动画组件

​3、创建并导入素材

4、制作角色骨骼

 5、设置四肢

6、制作动画 ​编辑


1、创建新项目

2、检测一下是否具有2d动画组件

 3、创建并导入素材

打开PS:

创建人物:这里需要注意的是,人物的头、手、身体、脚都要放在单独的图层里。

保存为psb格式

4、制作角色骨骼

直接将生成的图片文件拖拽到unity中即可

点击箭头可以看到组成角色的所有图层

 点击图片选择Multiple模式

 打开精灵编辑器

点击左上角选择SkiningEdito 

 变成如下界面

 添加骨骼:鼠标左键添加,右键停止。

 t添加骨骼帧的时候我们要注意,手臂和大腿的骨骼针都是与躯干相连的,这与我们人体骨骼类似,确保运动的连带性。

左侧的bone栏能对骨骼进行调整和编辑,点击reset bone就会复原

 点击Geometry栏中的Auto Geometry可以对角色添加mesh (三角网格),右下角能添加更多的网格,这些网格类似于人体的肌肉,能使整体产生更好的运动拉伸效果。

 可以看到调节骨骼针使,周围的“肌肉”也会发生微妙的变化

点击Edit Geometry可以编辑角色身体上包围的网格;点击下方的按钮还可以创建结点,编辑或者分割。

 当我们调节骨骼时,骨骼旁边的图片也会发生形变,有时是我们需要的,有时也不想产生这种效果,取消骨骼所带来的图片变化的方法如下:

点击Weights栏中的Bone Influence按钮,在点击图片,在右下角选择相应的骨骼,再点击减号,就能取消这根骨骼对周围图片的影响了。 

取消影响后的动作看起来就像是跳机械舞,注意如果把骨骼的影响全部取消就会发生“骨肉分离”的现象,对动画制作是不利的。

 这里的权重刷能增加图片上面颜色的深度,颜色越深则说明骨骼对图片的影响就越大。

设置好之后,点击Alay

 将角色拖进场景中

 在左侧栏可以看到每个骨骼针的对象。

 右侧也可以对骨骼进行调节

 5、设置四肢

目前为止每个骨骼都是单独活动的,为了使做动画更加方便,下面我们将进行整条胳膊和整条腿的连接。Unity2D—骨骼绑定、IK系统、动画(二)_憋屈y的博客-CSDN博客_ik系统

首先点击角色,并添加IK MANAGER 2D组件

 点击加号,添加Lamb

 左臂下面添加一个新物体

 将空物体重命名并把位置移动到指尖

再点击新建的IKmanager组件(已重命名)在把leftarmtarget拖入Effector并点击下面的create Target 

 然后就可以运动整条手臂了

如果方向相反,点击flip进行反翻转 

 下面进行其余手臂和腿的连接

下面就可以进行动画的制作了

6、制作动画 

 点击角色创建动画

一个鬼畜的动画就做完了 

leetcode1647. Minimum Deletions to Make Character Frequencies Unique

题目如下:

A string s is called good if there are no two different characters in s that have the same frequency.

Given a string s, return the minimum number of characters you need to delete to make s good.

The frequency of a character in a string is the number of times it appears in the string. For example, in the string "aab", the frequency of \'a\' is 2, while the frequency of \'b\' is 1

Example 1:

Input: s = "aab"
Output: 0
Explanation: s is already good.

Example 2:

Input: s = "aaabbbcc"
Output: 2
Explanation: You can delete two \'b\'s resulting in the good string "aaabcc".
Another way it to delete one \'b\' and one \'c\' resulting in the good string "aaabbc".

Example 3:

Input: s = "ceabaacb"
Output: 2
Explanation: You can delete both \'c\'s resulting in the good string "eabaab".
Note that we only care about characters that are still in the string at the end (i.e. frequency of 0 is ignored).

Constraints:

  • 1 <= s.length <= 105
  • s contains only lowercase English letters.

解题思路:先统计出每个字符出现的次数,然后从最大的出现次数开始,若不唯一,则将次数减一,再判断是否重复,循环直到不重复为止。

代码如下:

class Solution(object):
    def minDeletions(self, s):
        """
        :type s: str
        :rtype: int
        """
        res = 0
        dic = 
        for i in s:
            dic[i] = dic.setdefault(i,0)+1

        times = sorted(dic.itervalues())

        for val in dic.itervalues():
            if times.count(val) <= 1:continue
            tmp = val
            while tmp >= 0:
                if tmp not in times:break
                tmp -= 1
            times.pop(times.index(val))
            if tmp != 0: times.append(tmp)
            res += (val - tmp)
        return res

 

以上是关于Unity笔记:Make Character Bone2D的主要内容,如果未能解决你的问题,请参考以下文章

Unity UGUI——Text组件(Character)

Leetcode 1647. Minimum Deletions to Make Character Frequencies Unique

学习日志2022.10.08 Unity人物运动(移动+转身)Character Controller射线检测动画融合

Unity怎么添加character controller的

Unity Ragdoll Character Creator,Rigidbody [] Arrays和一般代码问题

unity中为啥我控制一个character controller物体,走向有capsule collider的物体,无法触发碰撞事件