目录
在unity2D项目中,想要制作平台跳跃类的游戏,肯定少不了角色的控制系统,在本片文章中将带领大家尝试实现2D玩家角色的移动及跳跃。
1.创建项目
正常创建一个2D或者URP2D的项目,将其命名为PlayerController
2.创建玩家角色以及相关场景
给玩家挂载身体的碰撞器以及刚体,这里将刚体挂在玩家身体精灵的父物体上,后面也会将代码挂在父物体上,目的是让父物体移动然后带动玩家移动。(记得将刚体的Z轴冻结,否则可能出现玩家的精灵翻倒的情况。)
同时创建一个正方体并将其拉长,挂载一个盒状的碰撞箱,充当地面。
3.代码部分
创建一个C#代码(BisicController),将其挂在Player下。
以下是代码部分:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BisicController : MonoBehaviour
{
private Rigidbody2D playerRigidBody;
public float moveSpeed;
public float jumpSpeed;
void Start()//在start函数中,会在游戏开始运行时调用一次其中的代码
{
playerRigidBody = GetComponent<Rigidbody2D>();//获取玩家的刚体
}
void Update()//在update函数中,每帧都会调用一次其中的代码
{
Move();
Jump();
}
void Move()//玩家移动的函数
{
//通过unity中Input输入的GetAxis函数来确定玩家移动的方向,并将其作为参数赋值给玩家x方向的向量,并令y方向的向量保持不变
playerRigidBody.velocity = new Vector2(Input.GetAxis("Horizontal") * moveSpeed, playerRigidBody.velocity.y);
}
void Jump()//玩家跳跃的函数
{
if(Input.GetKeyDown(KeyCode.K))//利用unity中Input输入的GetKeyDown函数检测是否“K“键被按下
{
//和玩家移动一样,给玩家y方向的向量赋值
playerRigidBody.velocity = new Vector2(playerRigidBody.velocity.x, jumpSpeed);
}
}
}
控制玩家移动的主要思路就是利用玩家刚体下的velocity并给其赋值,若在只X方向移动便将其他方向赋值为其本来的向量大小。
玩家跳跃同理,检测跳跃按键是否被按下,然后给velocity赋值。
注:
给输入设置键位可以在编辑器左上角的Edit中找到ProjecSettings..,在InputManager的Axis中修改
最后运行游戏就可以通过键盘输入来控制玩家移动了。