Scanvenger游戏制作笔记控制玩家操作

Posted Lmz_0314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scanvenger游戏制作笔记控制玩家操作相关的知识,希望对你有一定的参考价值。


前言

本文章是我学习SIKI学院Scanvenger项目所做笔记,原视频请自行搜索,
材质等相关资源请微信搜索SIKI学院公众号,回复120获取。源码也在里面。
游戏引擎:Unity3D2020.3
之前的Prefabs内容请提取源码中的prefabs

一、创建一个Rigidbody2D

因为不需要重力,所以选择

二、再创建一个刚体2D BOX Coliider2D,检测碰撞


设置Size为 0.9 ,0.9,保证相邻的两个格子不会发生碰撞

三、创建脚本

public class Player : MonoBehaviour

    // Start is called before the first frame update

    public float smoothing = 1; // 移动平滑度
    public float restTime = 1; // 休息时间,保证不会一直移动

    public float restTimer = 0; // 计时器


    // 当前位置
    private Vector2 targetPos = new Vector2(1, 1);

    // 得到刚体
    private Rigidbody2D rigidbody;

    void Start()
    
        rigidbody = GetComponent<Rigidbody2D>();
    

    // Update is called once per frame
    void Update()
    
        // 控制刚体移动
        // vector2.lerp(初始位置,目标位置,移动速度)
        rigidbody.MovePosition(Vector2.Lerp(transform.position, targetPos, smoothing * Time.deltaTime));

        restTimer += Time.deltaTime;
        if (restTimer < restTime) return;  // 如果移动时间大于休息时间,则不会移动

        float h = Input.GetAxisRaw("Horizontal");  // 上下移动
        float v = Input.GetAxisRaw("Vertical"); // 水平移动
        // 保证同时只能向上下移动或者向左右移动
        if (h > 0)
        
            v = 0;
        

    

        if(h != 0 || v!= 0)  // 当移动后才会出现休息时间
        
        targetPos += new Vector2(h, v);
        restTimer = 0; // 重新计时
        
        

    

四、修改玩家的移动平滑度和休息时间


最终我将smoothing设置为100,,restTime设置为1

系列链接

Scanvenger游戏制作笔记(一)Unity3D状态机转换
Scanvenger游戏制作笔记(二)控制玩家操作
Scanvenger游戏制作笔记(三)Unity3D创建对墙体的攻击
Scanvenger游戏制作笔记(四)Unity3D控制角色吃食物
Scanvenger游戏制作笔记(五)控制敌人的移动
Scanvenger游戏制作笔记(六)Unity3D创建游戏UI的显示
Scanvenger游戏制作笔记(七)Unity3D控制游戏的失败
Scanvenger游戏制作笔记(八)Unity3D关卡胜利条件的判断
Scanvenger游戏制作笔记(九)Unity3D创建声音

以上是关于Scanvenger游戏制作笔记控制玩家操作的主要内容,如果未能解决你的问题,请参考以下文章

Scanvenger游戏制作笔记Unity3D控制游戏的失败

Scanvenger游戏制作笔记Unity3D控制角色吃食物

Scanvenger游戏制作笔记Unity3D创建游戏UI的显示

Scanvenger游戏制作笔记Unity3D创建声音

Scanvenger游戏制作笔记Unity3D创建声音

Scanvenger游戏制作笔记Unity3D状态机转换