本文主要是介绍在Unity中的2D角色多段跳的简单实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Unity中的2D角色多段跳的简单实现
简述
在2D平台游戏中,角色的二段跳、三段跳的技能是十分常见的,有些游戏甚至允许更多次数的跳跃,本文在Unity中实现了一个简单的2D角色多段跳的功能,可以手动配置允许的跳跃次数。
可以在我的码云库上下载,角色控制的核心代码为Asset/Scene/Example/ExamplePlayerController.cs
。
下面是项目中Example场景下的一个三段跳的效果:
项目配置
本项目的2D角色采用Unity Asset Store上的素材。如果读者想按照本文的描述进行代码练习,可以打开Test场景,该场景中除了代码,角色的动画、粒子效果、摄像机控制都已经配置完毕。
其中Main Camera,CM vcam1是摄像机相关的内容,Ground与Platforms是地图,BlackBall是2D角色,其子对象Texture是2D角色的Sprite,Particle System是拖尾的粒子效果,Cloud是2D角色在空中跳跃时的云朵效果对象,默认是未激活状态,在本文后面会涉及到云朵效果的实现。BlackBall的动画状态机有3个参数SpeedH
、SpeedV
、IsGrounded
,分别表示水平速度、垂直速度、以及是否触地。
我将[Edit] - [Project Settings] - [Physics2D] - [Gravity] - [y] 设为 - 49.05,而不是默认的-9.81,这是为了提升2D角色跳跃的跃动感,相较于默认值,该设置下2D角色在下落时更敏捷。
水平移动实现
在实现跳跃之前先让我们实现基本的水平移动的控制,水平移动至少实现以下几个方面:获取键盘输入、根据输入控制角色左右移动、根据输入控制角色左右转向等。
创建PlayerController
脚本并添加给BlackBall对象,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerController : MonoBehaviour
{// 水平移动的速度public float moveSpeed;// 水平输入private float inputHorizontal;// 角色是否朝向右方private bool faceRight = true;private Rigidbody2D rb;private Animator anim;private void Start(){rb = GetComponent<Rigidbody2D>();anim = GetComponent<Animator>();}private void Update(){// 获取水平输入inputHorizontal = Input.GetAxisRaw("Horizontal");}private void FixedUpdate(){// 水平移动Move();// 动画状态切换SwitchAnimState();}// 水平移动控制private void Move(){
这篇关于在Unity中的2D角色多段跳的简单实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!