1. 首先实现跳跃是在已经实现游戏角色左右移动的基础上
    实现游戏角色移动的脚本

  2. 在脚本完成后需要将图层设置为Ground,使代码知道地面是哪一个图层。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerMovement : MonoBehaviour
{//获得角色刚体private Rigidbody2D rb;//获得角色碰撞器,游戏需要所以特别使用方形的colliderprivate BoxCollider2D coll;[Header("移动参数")]//设定角色的移动速度public float speed = 8f;[Header("跳跃参数")]//声明一个跳跃的力public float jumpForce = 6.3f;//当长按按键时加成的跳跃的力public float jumpHoldFroce = 1.9f;//长按跳跃按键可以按多长时间public float jumpHoldDuration = 0.1f;//记录跳跃的时间float jumpTime;[Header("状态")]//游戏角色是否站在地上的状态public bool isOnGround;//游戏角色是否处于跳跃的状态public bool isJump;[Header("环境检测")]//用来判断哪一个是地面的图层public LayerMask groundLayer;//按键的设置bool jumpPressed;//单次跳跃bool jumpHeld;//长按跳跃void Start(){//GetComponent< >():获取对象中指定类型的控件(脚本)rb = GetComponent<Rigidbody2D>();coll = GetComponent<BoxCollider2D>();}void Update(){//给跳跃按键进行赋值jumpPressed = Input.GetButtonDown("Jump");jumpHeld = Input.GetButton("Jump");}//写好的函数需要在FixedUpdate()中进行调用  private void FixedUpdate(){//先调用物理环境判断游戏角色是否在地面上PhysicsCheck();//在游戏角色跳跃之前调用游戏角色移动的函数,此脚本函数在游戏角色移动的脚本查看GroundMovement();//调用游戏角色跳跃的函数MidAirMovement();}//物理环境判断的函数void PhysicsCheck(){//判断游戏角色是否处于isOnGround状态if(coll.IsTouchingLayers(groundLayer))isOnGround = true;else isOnGround = false;}//跳跃有关的函数void MidAirMovement(){//1.判断角色在地面的同时按下了jump,并且角色不处于跳跃状态if(jumpPressed && isOnGround && !isJump){//2.跳跃的状态变成true,是否处于地面上变成falseisOnGround = false;isJump = true;//计算跳跃的时间jumpTime = Time.time + jumpHoldDuration;//2.添加跳跃的力使角色跳跃起来rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);}//3.判断如果现在是跳跃的状态else if (isJump){//4.持续按住跳跃if (jumpHeld)//5.添加持续跳跃的力rb.AddForce(new Vector2(0f, jumpHoldFroce), ForceMode2D.Impulse);//判断如果跳跃时间小于真实的时间if (jumpTime < Time.time)isJump = false;}}

AddForce( )
AddForce()是Rigidbody的一个方法:添加一个力到刚体。
使用方式:

rb.AddForce(x, y);

ForceMode2D.Impulse:突然产生的力。

跳跃代码逻辑:

  1. 先声明跳跃相关的参数、角色状态参数、环境检测参数、按键的设置。
  2. 对按键进行赋值、书写环境检测函数、书写游戏角色跳跃函数。
  3. 写好的函数需要在FixedUpdate()中进行调用,调用的时候要先对物理环境进行检测。

Unity2D游戏使游戏角色跳跃的脚本(包括长按跳跃加成)相关推荐

  1. Unity2D游戏使游戏角色移动的脚本

    想要使游戏角色移动起来 首先需要给游戏角色添加(Rigidbody)刚体.(Collider 2D)碰撞体.(Script)脚本. 能使游戏角色移动起来的脚本. using System.Collec ...

  2. Unity2D横版游戏开发(一) 人物的移动和跳跃

    目录 导入素材 人物移动 人物跳跃 我使用的Unity版本为2020.3.13f1c1,代码编辑器VSCode 导入素材 素材均来自https://itch.io/的免费素材 我选择的是https:/ ...

  3. unity2D横版游戏教程-2 代码实现

    接下来就是写代码的时候 我们创建一个文件夹用来存我们的脚本,名字就叫Scripts,在里面右键->Create->C#Script,这样就创建好了一个脚本 直接将这个脚本拖给我们Hiera ...

  4. unity2D横版游戏教程-3 Cinemachine镜头移动

    Cinemachine是官方提供的摄像机工具组件,这个工具的用处还蛮大的,不过我们这里就简单说一下在2D游戏里面怎么实现镜头跟踪的效果,这里我们用Cinemachine代替使用Main Camera ...

  5. 3D电影、游戏里的角色是怎么制作的?

    给出人物设定,概念设计师给出一个大概念,然后原画根据概念设计开始制作细化出人物的三视图.在这些任务完成后,我们就要开始将原画给予3D制作人员. 3D建模制作模型 在从原画师手中拿到原画后,建模师的工作 ...

  6. 游戏中的角色停止,时间停止

    游戏中的角色停止,时间停止 最近遇到一款很喜欢的游戏-<TimeLocker-Shooter>,翻译是"时间凝固-射击". 游戏介绍很简单:当你停止,时间停止 .操纵时 ...

  7. unity2D塔防游戏资源 Tower Defense 2D v1.3.1

    unity2D塔防游戏资源 Tower Defense 2D v1.3.1 包括: - 平铺地图编辑器窗口; - 级别编辑窗口; - 单位和塔编辑窗口; - 主菜单场景; - 级别选择场景; - 3个 ...

  8. 【绝对原创】Unity开发 NGUI如何使游戏屏幕 自适应

    使用NGUI如何使游戏屏幕 自适应 Hello 大家好,我叫阿祥,英文名叫LuckyDog.俺是新来滴,大家多多关照.. 首次写技术博客,我只是将这儿当做自己存储知识笔记的地方和以知识会友的平台,希望 ...

  9. 想做游戏次世代角色建模,如何学好人体和五官的雕刻?

    如果你没有一点美术基础的话,一开始就做角色建模会很难. 角色就是游戏中的人物.动物等活物,角色的起点要求比较高,要求 有比较好的美术基础,对人体结构有娴熟的了解,当然还要会用3D软件. 大家从最基础的 ...

最新文章

  1. git使用笔记(四)远程操作
  2. 2017 ZSTU寒假排位赛 #8
  3. echart的x换行
  4. php 0-1,PHP 动态解决0-1背包问题
  5. AWS 宣布创建“真正”开源的 Elasticsearch 分支
  6. 冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序
  7. 2021年中国船用鼓风机市场趋势报告、技术动态创新及2027年市场预测
  8. 数据有为 智在决策 | 观远数据2019智能决策峰会圆满落幕
  9. 关于Assembly.CreateInstance中被启动对象读取配置文件的问题
  10. linux系统中配置NFS实现文件共享
  11. bpython3 推送_python3对接聊天机器人API
  12. 7 netsnmp安装window_Linuxfx 10.2,一款来自巴西的Window操作系统,“山寨”出了高度...
  13. web移动开发总结(一)
  14. 利用windows网络诊断功能修复网络能连接但无Internet
  15. 基于 Transformer 模型的电影评论情感分类
  16. linux中浏览器安装flash player
  17. 一些实用高效的装机软件汇总
  18. 弹幕插件easyDanmaku.js使用详解
  19. ThreadLock
  20. 【R统计】主成分分析2——主成分回归

热门文章

  1. 【启示录】资源分配体系
  2. 人工智能(mysql)—— mysql完整的sql查询
  3. linux :ubuntu 实用软件
  4. 判断两数互质,java实现
  5. MySQL外网连接不上
  6. 彻底卸载服务器上的Oracle
  7. Python中的StringIO与cStringIO简析
  8. 程序员代码下的许豪杰
  9. [C#]关于接口Interface的场景假设-代码模拟-引喻类比-知识快照等-B
  10. VS Code保存后自动格式化Vue代码---Vetur