
👨💻个人主页:@元宇宙-秩沅
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大全(万字详解),不信你不收藏
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!



















