【2023unity游戏制作-mango的冒险】-3.基础动作和动画API实现

news2024/12/26 12:15:35

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

本文由 秩沅 原创

收录于专栏:unity游戏制作


⭐mango的基础动作动画的添加⭐


文章目录

    • ⭐mango的基础动作动画的添加⭐
    • 👨‍💻前言
    • 👨‍💻场景搭建
    • 🎶音频添加
    • 🎶mango的移动和动画
      • 😁实现效果:
      • 😁实现步骤:
    • 🎶mango的跳跃和动画
      • 😁实现效果:
      • **💕重点细节**:
      • 😁实现步骤:
    • 🎶整体代码2
    • ⭐相关文章⭐


👨‍💻前言


🎶版本: 为 Ltp 2021年版本的unity
🎶类型: 简单2D类冒险游戏
🎶目的: 熟悉掌握基本unityAPI
🎶视频教程:【2023小白狂飙unity2D冒险类游戏制作【mango的冒险】】


👨‍💻场景搭建


在这里插入图片描述

  • 需要注意的重点
  1. 渲染层级的关系

🎶音频添加


音频资源直接去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.实现转向和移动动画相契合
转向的三种方法注释
Rotation180度旋转
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大全(万字详解),不信你不收藏



你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本周大新闻|传微软解散工业元宇宙团队,MIT研发垂直堆叠全彩Micro LED

本周大新闻&#xff0c;AR方面&#xff0c;消息称微软解散工业元宇宙团队&#xff1b;德国AR公司Gixel GmbH亮相&#xff1b;Brilliant推出单片式附加形态AR眼镜&#xff1b;MIT研发垂直堆叠全彩Micro LED&#xff1b;谷歌XR串流正式上线。VR方面&#xff0c;索尼发布了PS VR2的…

【手写 Vuex 源码】第八篇 - Vuex 的 State 状态安装

一&#xff0c;前言 上一篇&#xff0c;主要介绍了 Vuex 模块安装的实现&#xff0c;针对 action、mutation、getter 的收集与处理&#xff0c;主要涉及以下几个点&#xff1a; Vuex 模块安装的逻辑&#xff1b;Vuex 代码优化&#xff1b;Vuex 模块安装的实现&#xff1b;Vue…

leetcode-每日一题-2335(简单,贪心)

自己打表看一下过程就可以发现&#xff0c;其实就是每次选两个大的进行--之后秒数加1即可现有一台饮水机&#xff0c;可以制备冷水、温水和热水。每秒钟&#xff0c;可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。给你一个下标从 0 开始、长度为 3 的整数数组 amount &am…

元学习(Meta Learning)最全论文、视频、书籍资源整理

Meta Learning&#xff0c;叫做元学习或者 Learning to Learn 学会学习&#xff0c;包括Zero-Shot/One-Shot/Few-Shot 学习&#xff0c;模型无关元学习(Model Agnostic Meta Learning)和元强化学习&#xff08;Meta Reinforcement Learning&#xff09;。元学习是人工智能领域&…

Redis基础篇

Redis基础篇 来自黑马的redis课程的笔记 【黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目】 目录Redis基础篇一、初识Redis1.安装2. 数据结构二、Redis常见命令1. Redis通用命令2. string类型2.1 key的层级格式…

【成为架构师课程系列】预备架构 Pre-Architecture 的故事

目录 前言 Pre-architecture的故事 Pre-architecture 核心“四步法” 需求结构化 架构约束

1行Python代码去除图片水印,网友:一干二净

大家好&#xff0c;这里是程序员晚枫。 最近小明在开淘宝店&#xff08;店名&#xff1a;爱吃火锅的少女&#xff09;&#xff0c;需要给自己的原创图片加水印&#xff0c;于是我上次给她开发了增加水印的功能&#xff1a;图片加水印&#xff0c;保护原创图片&#xff0c;一行…

伏并网低电压穿越技术

国内光伏并网低电压穿越要求 略&#xff1a; 低电压穿越方法 当前&#xff0c;光伏电站实现低电压穿越可通过两种方式&#xff0c;即增加硬件设备或者改变控制策略。本节对基于储能设备、基于无功补偿设备、基于无功电流电压支撑控制策略三种实现LVRT的典型方法进行介绍。 …

【MT7628】开发环境搭建-Fedora12一步一步设置共享文件夹

1.按照下图操作,打开设置界面 2.点击设置,弹出如下对话框

【博客620】prometheus如何优化远程读写的性能

prometheus如何优化远程读写的性能 场景 为了解决prometheus本地存储带来的单点问题&#xff0c;我们一般在高可用监控架构中会使用远程存储&#xff0c;并通过配置prometheus的remote_write和remote_read来对接 远程写优化&#xff1a;remote_write 远程写的原理&#xff1a…

Springboot扩展点之@PostConstruct

前言postContruct全限定类名是javax.annotation.PostConstruct&#xff0c;可以看出来其本身不是Spring定义的注解&#xff0c;但是Spring提供了具体的实现&#xff0c;所以这篇文章主要分析的是PostConstruct在Spring项目开发中的功能特性、实现方式和基本工作原理。功能特性从…

Linux c编程之Wireshark

Wireshark是一个网络报文分析软件,是网络应用问题分析必不可少的工具软件。网络管理员可以使用wireshark排查网络问题。程序开发人员可以用来分析应用协议、定位分析应用问题。无论是网络应用程序开发人员、测试人员、部署人员、技术支持人员,掌握wireshark的使用对于分析网络…

【LeetCode】每日一题(2)

目录 题目&#xff1a;1138. 字母板上的路径 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;1138. 字母板上的路径 - 力扣&am…

Python-项目实战--贪吃蛇小游戏-游戏框架搭建(2)

1.游戏框架搭建介绍pygame开发图像界面游戏的几个要素&#xff0c;并且把贪吃蛇游戏的整体框架搭建完成本节知识点包括&#xff1a;pygame的初始化和退出游戏主窗口游戏循环和游戏时钟主窗口背景颜色绘制文本pygame的坐标系游戏事件监听绘制图形定时器事件1.1pygame的初始化和退…

RocketMQ5.0.0消息存储<三>_消息转发与恢复机制

目录 一、消息转发 1. ReputMessageService线程初始化 2. 消息转发更新ConsumeQueue 3. 消息转发更新IndexFile 二、恢复机制 1. Broker加载存储文件 2. Broker正常退出的文件恢复 3. Broker异常退出的文件恢复 三、参考资料 一、消息转发 消息消费队列文件、索引文件…

七大设计原则之单一职责原则应用

目录1 单一职责原则介绍2 单一职责原则应用1 单一职责原则介绍 单一职责&#xff08;Simple Responsibility Pinciple&#xff0c;SRP&#xff09;是指不要存在多于一个导致类变更的原因。假设我们有一个 Class 负责两个职责&#xff0c;一旦发生需求变更&#xff0c;修改其中…

线程池的简单实现:Java线程池初学者必读指南

"作为一名Java开发者&#xff0c;是否曾经遇到过多线程并发的问题&#xff1f;线程数量过多时&#xff0c;会导致资源浪费&#xff0c;应用性能下降&#xff0c;甚至发生线程死锁的情况。那么&#xff0c;有没有一种方法可以有效地管理线程&#xff0c;避免这些问题呢&…

Matlab傅里叶谱方法求解一维波动方程

傅里叶谱方法求解基本偏微分方程—一维波动方程 一维波动方程 对于一根两端固定、没有受到任何外力的弦, 若只研究其中的一段, 在不太长的时间 里, 固定端来不及对这段弦产生影响, 则可以认为固定端是不存在的, 弦的长度为无限大。 这种无界 (−∞<x<∞)(-\infty<x&…

震源机制(Focal Mechanisms)之沙滩球(Bench Ball)

沙滩球包含如下信息&#xff1a; a - 判断断层类型&#xff0c;可根据球的颜色快速判断 b - 判断断层的走向(strike)&#xff0c;倾角(dip) c - 确定滑移角/滑动角(rake) 走向 &#xff0c;倾角&#xff0c;滑移角 如不了解断层的定义&#xff0c;可以先阅读&#xff1a;震…

windows下qt设置网卡ip信息+简单案列(图形化界面设置网卡IP)。

windows设置网卡ip信息的方法 文章目录windows设置网卡ip信息的方法前言一、QProcess修改网卡ip信息1.1 代码实例二、system修改网卡ip信息2.1 代码实例三、qt修改网卡信息案例3.1 设计方法3.2 代码实例3.3 功能测试前言 方法1&#xff1a;QProcess修改网卡ip信息&#xff1b;…