当前位置:网站首页>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)
边栏推荐
- How to view the web password saved by Google browser
- Dolphin scheduler uses system time
- Fabric.js 笔刷到底怎么用?
- 【OpenCV 例程200篇】213. 绘制圆形
- Google开源依赖注入框架-Guice指南
- As shown in the figure, the SQL row is used to convert the original table of Figure 1. Figure 2 wants to convert it
- Restful style
- Chapter 5 trees and binary trees
- 增量快照 必须要求mysql表有主键的吗?
- [Unity][ECS]学习笔记(二)
猜你喜欢
PyGame game: "Changsha version" millionaire started, dare you ask? (multiple game source codes attached)
Solve the problem that the value of the action attribute of the form is null when transferring parameters
Redis sentinel cluster main database failure data recovery ideas # yyds dry goods inventory #
Numpy array: join, flatten, and add dimensions
用 Compose 实现个空调,为你的夏日带去清凉
理想中的接口自动化项目
Huawei OSPF single region
Idea failed to connect to SQL Sever
Dbeaver installation and use tutorial (super detailed installation and use tutorial)
[Unity]内置渲染管线转URP
随机推荐
[Unity]EBUSY: resource busy or locked
再見!IE瀏覽器,這條路由Edge替IE繼續走下去
满电出发加速品牌焕新,长安电动电气化产品吹响“集结号”
解决表单action属性传参时值为null的问题
Proxy mode (proxy)
The boss asked me to write an app automation -- yaml file reading -- with the whole framework source code attached
Thread lifecycle
Chapter 5 trees and binary trees
Adapter mode
用 Compose 实现个空调,为你的夏日带去清凉
六月集训(第28天) —— 动态规划
如图 用sql行转列 图一原表,图二希望转换后
What is the best way to learn machine learning
idea连接sql sever失败
[Unity][ECS]学习笔记(二)
Matplotlib attribute and annotation
Key summary IV of PMP examination - planning process group (2)
Discard Tkinter! Simple configuration to quickly generate cool GUI!
Correct conversion between JSON data and list collection
使用 ABAP 操作 Excel 的几种方法