当前位置:网站首页>Day 6 script and animation system
Day 6 script and animation system
2022-06-28 10:14:00 【Code Knight】
One 、 Basic concepts of animation system

1、 The basic concept of animation

(1) frame

(2) Frame animation

(3)3D Skeletal animation




(4)2D Skeletal animation

2、 Animation fusion
3、 Animation state machine

(1) Understand animation state machine

(2) Animation state machine design example



4、 Root bone animation



Two 、2D Animation example analysis

1、 preparation
(1) Download resources


(2) Organize resources


(3) Picture settings




2、 The production steps of roles and controls
(1) Download resources
You need to modify the following code to demonstrate :
SimpleActivatorMenu.cs
using System;
using UnityEngine;
#pragma warning disable 618
namespace UnityStandardAssets.Utility
{
public class SimpleActivatorMenu : MonoBehaviour
{
// An incredibly simple menu which, when given references
// to gameobjects in the scene
//public GUIText camSwitchButton;
public GameObject[] objects;
private int m_CurrentActiveObject;
private void OnEnable()
{
// active object starts from first in array
m_CurrentActiveObject = 0;
// camSwitchButton.text = objects[m_CurrentActiveObject].name;
}
public void NextCamera()
{
int nextactiveobject = m_CurrentActiveObject + 1 >= objects.Length ? 0 : m_CurrentActiveObject + 1;
for (int i = 0; i < objects.Length; i++)
{
objects[i].SetActive(i == nextactiveobject);
}
m_CurrentActiveObject = nextactiveobject;
// camSwitchButton.text = objects[m_CurrentActiveObject].name;
}
}
}
PlatformerCharacter2D.cs
using System;
using UnityEngine;
#pragma warning disable 649
namespace UnityStandardAssets._2D
{
public class PlatformerCharacter2D : MonoBehaviour
{
[SerializeField] private float m_MaxSpeed = 10f; // The fastest the player can travel in the x axis.
[SerializeField] private float m_JumpForce = 400f; // Amount of force added when the player jumps.
[Range(0, 1)] [SerializeField] private float m_CrouchSpeed = .36f; // Amount of maxSpeed applied to crouching movement. 1 = 100%
[SerializeField] private bool m_AirControl = false; // Whether or not a player can steer while jumping;
[SerializeField] private LayerMask m_WhatIsGround; // A mask determining what is ground to the character
private Transform m_GroundCheck; // A position marking where to check if the player is grounded.
const float k_GroundedRadius = .2f; // Radius of the overlap circle to determine if grounded
private bool m_Grounded; // Whether or not the player is grounded.
private Transform m_CeilingCheck; // A position marking where to check for ceilings
const float k_CeilingRadius = .01f; // Radius of the overlap circle to determine if the player can stand up
private Animator m_Anim; // Reference to the player's animator component.
private Rigidbody2D m_Rigidbody2D;
private bool m_FacingRight = true; // For determining which way the player is currently facing.
public bool m_JumpReset = false;
private void Awake()
{
// Setting up references.
m_GroundCheck = transform.Find("GroundCheck");
m_CeilingCheck = transform.Find("CeilingCheck");
m_Anim = GetComponent<Animator>();
m_Rigidbody2D = GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
m_Grounded = false;
// The player is grounded if a circlecast to the groundcheck position hits anything designated as ground
// This can be done using layers instead but Sample Assets will not overwrite your project settings.
Collider2D[] colliders = Physics2D.OverlapCircleAll(m_GroundCheck.position, k_GroundedRadius, m_WhatIsGround);
for (int i = 0; i < colliders.Length; i++)
{
if (colliders[i].gameObject != gameObject)
{
if (colliders[i].gameObject.tag == "JumpPoint")
{
m_JumpReset = true;
Destroy(colliders[i].gameObject);
}
else
{
m_Grounded = true;
}
}
}
m_Anim.SetBool("Ground", m_Grounded);
// Set the vertical animation
m_Anim.SetFloat("vSpeed", m_Rigidbody2D.velocity.y);
}
public void Move(float move, bool crouch, bool jump)
{
// If crouching, check to see if the character can stand up
if (!crouch && m_Anim.GetBool("Crouch"))
{
// If the character has a ceiling preventing them from standing up, keep them crouching
if (Physics2D.OverlapCircle(m_CeilingCheck.position, k_CeilingRadius, m_WhatIsGround))
{
crouch = true;
}
}
// Set whether or not the character is crouching in the animator
m_Anim.SetBool("Crouch", crouch);
//only control the player if grounded or airControl is turned on
if (m_Grounded || m_AirControl)
{
// Reduce the speed if crouching by the crouchSpeed multiplier
move = (crouch ? move * m_CrouchSpeed : move);
// The Speed animator parameter is set to the absolute value of the horizontal input.
m_Anim.SetFloat("Speed", Mathf.Abs(move));
// Move the character
m_Rigidbody2D.velocity = new Vector2(move * m_MaxSpeed, m_Rigidbody2D.velocity.y);
// If the input is moving the player right and the player is facing left...
if (move > 0 && !m_FacingRight)
{
// ... flip the player.
Flip();
}
// Otherwise if the input is moving the player left and the player is facing right...
else if (move < 0 && m_FacingRight)
{
// ... flip the player.
Flip();
}
}
// If the player should jump...
if ((m_Grounded || m_JumpReset) && jump)
{
// Add a vertical force to the player.
m_Grounded = false;
m_JumpReset = false;
m_Anim.SetBool("Ground", false);
Vector2 resetVlocity = m_Rigidbody2D.velocity;
resetVlocity.y = Mathf.Max(0, resetVlocity.y);
m_Rigidbody2D.velocity = resetVlocity;
m_Rigidbody2D.AddForce(new Vector2(0f, m_JumpForce));
}
}
private void Flip()
{
// Switch the way the player is labelled as facing.
m_FacingRight = !m_FacingRight;
// Multiply the player's x local scale by -1.
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
}demonstration :
(2) Organize resources



(3) Picture settings



3、 Animation production steps

4、 Create animation variables

(1) Edit animation

notes : The new version of the unity No, sample You can manually change the frame rate by dragging the picture .
(2) Edit animation state machine

(3) Create animation variables

5、 Set animation transition

6、 Modify animation variables with scripts

7、 Scripting highlights

8、 Summarize and expand

3、 ... and 、 Import of 3D model and animation
1、 Import example

2、 3D model resource settings

3、 3D animation resource settings

4、 The relationship between model bones and animation bones

Four 、 Example analysis of advanced animation technology

1、 Animation fusion tree

2、 Script analysis of third person role control

3、 The use of root bone animation

4、 Animation masks

5、 Animation layer

6、 Animation frame Events

7、 Reverse dynamics (IK)

边栏推荐
- Function sub file writing
- Django database operation and problem solving
- Crawler small operation
- Xiaomi's payment company was fined 120000 yuan, involving the illegal opening of payment accounts, etc.: Lei Jun is the legal representative, and the products include MIUI wallet app
- Proxy mode (proxy)
- Composite pattern
- Read PDF Text and write excel operation
- Unity 从服务器加载AssetBundle资源写入本地内存,并将下载保存的AB资源从本地内存加载至场景
- [200 opencv routines] 213 Draw circle
- 六月集训(第28天) —— 动态规划
猜你喜欢

How to distinguish and define DQL, DML, DDL and DCL in SQL

再见!IE浏览器,这条路由Edge替IE继续走下去

一文读懂 12种卷积方法(含1x1卷积、转置卷积和深度可分离卷积等)

缓存之王Caffeine Cache,性能比Guava更强

通过PyTorch构建的LeNet-5网络对手写数字进行训练和识别

Composite pattern

PMP Exam key summary VI - chart arrangement

Interface automation framework scaffold - use reflection mechanism to realize the unified initiator of the interface

Caffeine cache, the king of cache, has stronger performance than guava

错过金三银四,找工作4个月,面试15家,终于拿到3个offer,定级P7+
随机推荐
R language plot visualization: plot to visualize overlapping histograms, and use geom at the bottom edge of the histogram_ The rugfunction adds marginal rugplots
如何使用 DataAnt 监控 Apache APISIX
Explain final, finally, and finalize
JVM family (2) - garbage collection
Application of X6 in data stack index management
第三章 栈和队列
dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能
Instant messaging and BS architecture simulation of TCP practical cases
Thread lifecycle
Sword finger offer | linked list transpose
一文读懂 12种卷积方法(含1x1卷积、转置卷积和深度可分离卷积等)
Must the MySQL table have a primary key for incremental snapshots?
股票开户用中金证券经理发的开户二维码安全吗?知道的给说一下吧
第五章 树和二叉树
Matplotlib属性及注解
Dbeaver installation and use tutorial (super detailed installation and use tutorial)
Idea failed to connect to SQL Sever
[happy Lantern Festival] guessing lantern riddles eating lantern festival full of vitality ~ (with lantern riddle guessing games)
R语言plotly可视化:plotly可视化互相重叠的直方图(histogram)、在直方图的底部边缘使用geom_rug函数添加边缘轴须图Marginal rug plots
Solve the problem that the value of the action attribute of the form is null when transferring parameters

