【1】——角色的创建和移动控制脚本

Unity2D RPG游戏制作学习【TopDown类型】


教程参考:Nine叔的【Unity2D RGP】教学系列https://www.bilibili.com/video/BV1gN4y1F77G/?spm_id_from=333.1007.top_right_bar_window_history.content.click

Player的创建

  1. 首先创建一个Empty Object,然后重置一下Transform组件的初始值(养成好习惯)
    接着把Sprite素材拖到资源层级中,拖拽给刚才的空物体,作为它的子物体部件
    如图所示

2.为这个父物体添加一些基础必用的组件——RigidBody2D、BoxCollider 2D等,然后完成一些相关的初始设置(比如在我们这个TopDown类型的游戏中,我们不希望角色有重力而掉出屏幕,所以把Rb2D的Gravity Scale属性设置为0, 冻结z轴防止角色产生不必要的旋转Freeze Rotation;同时调整一下碰撞体的范围,在俯视角游戏中,通常不需要包含到整个角色身体,只需要腰部甚至腿部更低以下)
在这里插入图片描述
3. 为角色添加脚本组件,首先我们需要一个控制角色移动的脚本,通常命名为PlayerController(对于这些基础通用的部分来说,尽量保持一个统一的规范,这样既方便交流也可以为后面学习各种游戏制作培养好的习惯)

代码中有一些习惯可以尽量注意一下,方便后续的阅读和使用:

  • 变量声明放在类的最开始部分,通常把public变量放置于较前面;
  • 函数声明和定义放在变量声明的后面,其中Start()、Update()、FixedUpdate()函数通常我们不会在里面进行各种定义,而是作为一个盒子来调用我们后面写的大部分自定义的函数
  • Update()反应更灵敏,适合进行玩家按键输入的检测;FixedUpdate()稳定性更好,适合进行物理方面的检测;
  • GetAxisRaw()获取到的值为-1、 0 、 1;而GetAxis()获取到的值是[-1, 1]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    /*变量声明部分*/
    public float moveSpeed;
    private Rigidbody2D rb;
    private float moveX, moveY;
    private Vector2 moveDirection;



    /*函数部分*/
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()           //输入类的操作
    {
        InputSection();
    }

    void FixedUpdate() {    //物理类的操作
        playerMove();
    }

    private void InputSection()   //输入部分
    {
        moveX = Input.GetAxisRaw("Horizontal");   //水平方向上的输入
        moveY = Input.GetAxisRaw("Vertical");     //竖直方向上的输入
        moveDirection = new Vector2(moveX, moveY).normalized;
    }

    private void playerMove()    //物理部分
    {
        rb.velocity = new Vector2(moveDirection.x * moveSpeed, moveDirection.y * moveSpeed);
    }
}


在2D RPG类型的游戏中,我们通常都会使用到的一些变量有:
移动速度——moveSpeed(public变量,方便面板调节)
移动方向——moveX, moveY, moveDirection(moveDirection作为Vector2的变量,因为当角色的移动方向不止有水平和竖直两种时,那就需要引入一个向量类型来表示移动方向了)
``

注意 !角色在斜向上移动时,由于Vector2的长度变成了根号2,所以斜向上的速度会变快,这时候用一个归一化操作.normalized就可以解决了,数学原理是这样的:在这里插入图片描述

至此,我们的角色已经可以动起来了

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值