👨💻个人主页:@元宇宙-秩沅
hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 秩沅 原创
收录于专栏:unity游戏制作
⭐mango的基础动作动画的添加⭐
文章目录
- ⭐mango的基础动作动画的添加⭐
- 👨💻前言
- 👨💻场景搭建
- 🎶音频添加
- 🎶mango的移动和动画
- 😁实现效果:
- 😁实现步骤:
- 🎶mango的跳跃和动画
- 😁实现效果:
- **💕重点细节**:
- 😁实现步骤:
- 🎶整体代码2
- ⭐相关文章⭐
👨💻前言
🎶版本: 为 Ltp 2021年版本的unity
🎶类型: 简单2D类冒险游戏
🎶目的: 熟悉掌握基本unityAPI
🎶视频教程:【2023小白狂飙unity2D冒险类游戏制作【mango的冒险】】
👨💻场景搭建
- 需要注意的重点
- 渲染层级的关系
🎶音频添加
音频资源直接去unity的商店里下载免费的资源即可
- 添加下图圈出的组件名
🎶mango的移动和动画
😁实现效果:
😁实现步骤:
- 1.确定–移动的实现是通过刚体力的牵引
mango添加RigidBody2D组件 - 2.添加地形碰撞器
- 3. 通过刚体组件实现物体的移动,我们只需要将刚体速度的大小和方向进行赋值即可
细节:勾选Freeze Rotation Z
作用:不会倾倒
//通过刚体组件实现物体的移动,我们只需要将刚体速度的大小和方向进行赋值即可
//mangoMovex 和 mangoMoveY 都是vector2 类型的变量
mangoMovex = Vector2.right * x * SpeedVauel; //x轴的速度
mangoMovey = new Vector2(0, Rmango.velocity.y); //y轴的速度
//速度向量的合成,有大小并且有方向的
Rmango.velocity = mangoMovex + mangoMovey;
// 效果: 可以进行移动,但是方向不变,定向的,
- 4.添加移动的动画
MGanimator.SetFloat("Run", Mathf.Abs(Rmango .velocity .x));
- 5.实现转向和移动动画相契合
转向的三种方法 | 注释 |
---|---|
Rotation | 180度旋转 |
Scale | 正负的切换 |
Flip | 勾选 |
if (x > 0)
{
transform.rotation = new Quaternion(0, 0, 0, 0);
}
else if (x < 0)
{
transform.rotation = new Quaternion(0, 180, 0, 0);
}
🎶mango的跳跃和动画
😁实现效果:
💕重点细节:
- 动画之间切换不流畅(空中播放奔跑的动画)
- 跳不起来,跳太高,重复跳
- 逻辑不顺畅导致的错误
- 动画播放的快慢的控制
😁实现步骤:
- 1.给动画机添加跳跃动画Jump
- 2.当按下空格的时候,实现跳跃的动作
- 3.在跳跃时不播放奔跑动画也不播放静止动画
- 4.向上拉的力能否将物体拉动,并且下降是否连贯
(做牵引力运动要考虑力和质量还有重力的关系)
动画的逻辑:
奔跑动画在跳跃状态时才切换到跳跃动画
禁止状态在跳跃状态时也切换到跳跃动画
🎶整体代码2
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Rendering;
using UnityEngine;
//-----------------------
//--作用:mango的移动
//-----------------------
public class mangoMove : MonoBehaviour
{
// Start is called before the first frame update
private float x;
private float y;
private Rigidbody2D Rmango;
private Vector2 mangoMovex,mangoMovey;
private float SpeedVauel = 5;
public float JumpSpeed = 1000;
private Animator MGanimator;
private bool isGrounp;
void Start()
{
Rmango = GetComponent<Rigidbody2D>();
MGanimator = GetComponent<Animator>();
}
private void Update()
{
x = Input.GetAxis("Horizontal"); // 按AD键获取类型为Float的数值作为系数范围为【-1,1】
//当按下A的时候 x是负数 ,按下D的时候x是正数
if (x > 0)
{
transform.rotation = new Quaternion(0, 0, 0, 0);
}
else if (x < 0)
{
transform.rotation = new Quaternion(0, 180, 0, 0);
}
//当按下空格键和 符合 在地面的条件时
if ( Input.GetButtonDown ("Jump") && isGrounp )
{
Rmango.AddForce(Vector2.up * JumpSpeed );
MGanimator.SetBool("Jump", true);
}
else if( isGrounp == true )
{
MGanimator.SetBool("Jump", false );
}
}
void FixedUpdate()
{
Move();
}
private void Move()
{
//通过刚体组件实现物体的移动,我们只需要将刚体速度的大小和方向进行赋值即可
//mangoMovex 和 mangoMoveY 都是vector2 类型的变量
mangoMovex = Vector2.right * x * SpeedVauel; //x轴的速度
mangoMovey = new Vector2(0, Rmango.velocity.y); //y轴的速度
//速度向量的合成,有大小并且有方向的
Rmango.velocity = mangoMovex + mangoMovey;
if (isGrounp == true ) //是否在地面上
{
MGanimator.SetFloat("Run", Mathf.Abs(Rmango .velocity .x));
}
else
{
MGanimator.SetFloat("Run", 0);
}
}
//碰撞器方法
private void OnCollisionEnter2D(Collision2D collision)
{
isGrounp =collision . gameObject.CompareTag("grounp");
Debug.Log(" " + isGrounp);
}
private void OnCollisionExit2D(Collision2D collision) //也可以说是跳跃状态的时候
{
isGrounp = false;
Debug.Log(" " + isGrounp);
}
}
🎶🎶我们继续后面的制作。
⭐相关文章⭐
⭐【2023unity游戏制作-mango的冒险】-2.开始画面API制作
⭐【unity游戏制作-mango的冒险】-1.场景搭建
⭐“狂飙”游戏制作—游戏分类图鉴(网易游学)
⭐本站最全-unity常用API大全(万字详解),不信你不收藏
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!