首页 > 编程语言 >Unity引擎2D游戏开发,C#实现人物跳跃

Unity引擎2D游戏开发,C#实现人物跳跃

时间:2023-12-13 14:22:43浏览次数:26  
标签:Jump C# 2D Unity ForceMode2D 跳跃 刚体

一、Component内,实现变量参数分栏


[Header("XXXX")]

二、在新建的Input Actions中添加跳跃绑定


三、在2D刚体所绑定的C#代码中调用Input Actions中新建的跳跃动作

  1. 在unity中,跳跃动作相当于对2D刚体施加Y轴方向的力。因此,增加一个力数值的变量jumpForce。
    public float jumpForce;
    
  2. 调用`PlayerInputControl`中的Gameplay方法内新建的Jump方法,由于是按下按键即触发,因此使用Jump方法的started事件。然后再将此事件注册给即将在当前C#文件创建的Jump方法
    playerInputControl.Gameplay.Jump.started += Jump;
    
  3. 在此新创建的Jump方法中,使用AddForce方法对2D刚体施加一个力。

    public void AddForce(Vector2 force, ForceMode2D mode = ForceMode2D.Force);

    第一个参数Vector2,transform.up为世界坐标为基准向上的方向再增加一定数量倍率的增量;

    第二个参数ForceMode2D,即力的模式,此处使用Impulse,则为瞬时增量。

    private void Jump(InputAction.CallbackContext context)
    {
        rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
    }
    

四、调整重力加速度的值,以及JumpForce力的加值

在2D刚体中,可以调整Gravity Scale的值,调整重力加速度,数值越大,受重力影响越大
image

在创建的脚本中,可以调整Jump Force的值,调整跳跃的力,数值越大,跳的越高
image

标签:Jump,C#,2D,Unity,ForceMode2D,跳跃,刚体
From: https://www.cnblogs.com/xinlindeyu/p/17898947.html

相关文章

  • Qt小知识2.Q_GLOBAL_STATIC
    1了解Q_GLOBAL_STATICQ_GLOBAL_STATIC是Qt中提供的一个宏,用于创建跨越多个文件的全局静态对象。其主要作用在于两点:懒惰初始化(Lazyinitialization):它确保全局静态对象只有在首次使用时才被创建,而不是在程序启动时立即创建,从而可以减少程序启动时的初始化开销。线程安全(......
  • 【Python小随笔】 Grpc协议的使用
    定义接口//test.protosyntax="proto3";optioncc_generic_services=true;serviceGreeter{//第一个接口rpcOne(OneRequest)returns(OneResponse){}//第二个接口rpcTwo(TwoRequest)returns(TwoResponse){}}//第1个接口请求值messageOn......
  • day21 atm项目 shopping_car
    shopping_car()fromatm.lib_common.file_handleimport*fromatm.core.shoppingimportgoods_showfromatm.lib_common.money_enquiryimport*defcompute_money_total(username):"""计算购物车总价返回购物车总价和购物车字典"""......
  • springboot-micrometer潜在oom问题解决办法
    在服务中起一个监听Prometheus拉取的线程,在拉取完成之后清理调meterMap中内容比较多的tag,我这边是清理调gateway.requests.代码如下:@ComponentpublicclassPrometheusMeterRegistryFactory{@ResourceprivatePrometheusMeterRegistryprometheusMeterRegistry;......
  • 阻塞队列linkedBlockQuene和syncroBlockQuene的区别?
    在Java中,LinkedBlockingQueue和SynchronousQueue是两种不同类型的阻塞队列,它们有一些关键的区别:实现机制:LinkedBlockingQueue使用一个链表实现的有界或无界队列。有界队列的容量是固定的,而无界队列的容量理论上是无限的。SynchronousQueue是一个特殊的阻塞队列,它在内部......
  • RecyclerView组件强化——设置rv最大高度,显示滑动条,跳到最后子view
     意义:RecyclerView基础就LinearLayout排列子view。需要扩展它的最大高度,滑动条,跳到最后子view等1.设置最大高度:recycvlerView设置最大高度需求在:选取不同数据后需要一个Rv来展示所选数据。但布局的高度是有限的,导致rv不能设置自适应来无限增高intmaxH......
  • simpread-Ubuntu 扩容磁盘、扩容内存_ubuntu 扩容 the file system can not be resize
    原文地址blog.csdn.net参考:Ubuntu磁盘扩容及启动问题整理作者:一只青木呀发布时间:2020-12-0810:42:19网址:https://blog.csdn.net/weixin_45309916/article/details/110850358也可参照正点原子的:Ubuntu磁盘空间不足?一招轻松扩容Ubuntu磁盘扩容(简单亲测有效)Ubuntu......
  • @Async总结
    使用场景:开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑,比如消息推送、商品同步等都可以使用异步方法,这时我们可以用到@Async。但是直接使用@Async会有风险,当我们没有指定线程池时,他会默认使用其Spring自带的SimpleAsyncTaskExecutor线程池,会不断的创建线程,当并发......
  • cesium.js入门基础教程二 (影像和标注)
    影像简介Cesium加载大的虚拟地球默认是有影像的,如图:默认使用的影像是“BingMapsAerial”:影像提供者ImageryProvider除了途中列出的一些影像,开发者可以通过Cesium中的ImagerProvider影像提供者类创建所需的影像,Cesium中提供了很多种ImageryProvider影像提供类(不包括抽象......
  • SQLServer数据库JDBC连接串参数的简单学习
    SQLServer数据库JDBC连接串参数的简单学习背景前段时间一直跟同事一起处理SQLServer比其他数据库的deadlock更多的问题.涉及到了几个驱动的参数.想着问题基本上告一段落,将这一块的情况总结一下.便于后续遇到问题时的快速处理.关于参数现阶段的字符连接串为:jdbc:s......