2D横版跳跃游戏第一节

创建一个新项目

打开unity,然后选择new,将Template的3D改为2D。
准备界面

项目资源

将资源导入到unity里。

游戏场景

这里写图片描述
(1)将素材拖进场景里,在右边的Sprite Renderer组件里的color可以随意改变颜色。
(2)给这个对象添加box collider2D组件,因为这个将当做地板。

背景颜色与游戏视野

2D游戏的背景颜色可以在Main camera对象里的background里更改
这里写图片描述
Projection要改为Orthographic(因为这是2D视野)
感觉主角过大的话可以把摄像头尺寸调大(让视野更宽广)将Size调大即可

玩家角色动画

将玩家角色的素材拖入场景 名字更改为Player


点击玩家角色 点开Game旁边的Animation
创建新的动画 名为idle
创建完以后点击Add Property → Sprite Renderer → Size(添加一个曲线)
将待机的素材放进曲线里
改Sample可以让动画切换的速度变慢
需要注意的是在第60秒可能会有原素材在里面 要删掉
这里写图片描述
其他动画同理
一共有待机,跑步,跳起,跳下,滑行等动画。

玩家角色


(1)给玩家添加Box Collider 2D组件 因为滑行的状态是靠着墙壁的
所以先把素材换成滑行的素材 然后依照滑行的素材更改碰撞体积
(2)添加刚体组件(Rigidbody2D)

实现角色移动

原理是通过施加力(AddForce)来让玩家移动
创建C#脚本 命名为Move

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class move : MonoBehaviour {
    public float force_move = 50;//移动的力 用力推动角色移动
    Rigidbody2D rgd;//引用刚体组件
    private void Awake()
    {
        rgd = GetComponent<Rigidbody2D>();//获得刚体组件
    }

  
    void Update () {
        float h = Input.GetAxis("Horizontal");//给h赋值 输入左右键
        Vector2 velocity = rgd.velocity;//将矢量的速度赋予给刚体
        if (h > 0.05f)//大于0.05的话就是按了右键
        {
            rgd.AddForce(Vector2.right * force_move);//给刚体施加力
        }
        else if (h < -0.05f)//小于0.05的话就是按了左键
        {
            rgd.AddForce(-Vector2.right * force_move);//给刚体施加力
        }
    }
}

将脚本拖进Player的对象里
然后启动游戏就会发现可以左右移动了

切换状态

点击Player的对象
点击Scene旁边的Animator 会发现里面有五个状态 即为idle,run,jumpup ,jumpdown ,slide (如果之前有正确创建的话)
这里写图片描述
我们首先要做的是将待机状态转化为奔跑:
右键idle状态 → Make Transition → 连接到run状态 →再右键run状态
→ MakeTransition →连接到idle状态
这样状态就可以互相切换了

但是要创建一个值让它们判断/自动切换
点击Layer旁边的Parameters → 创建(“+”符号) → Float值 → 命名为horizontal
用Float值是为了判定是否大于小于速度就切换状态 用绝对值更改值
在Move脚本里(Update) 添加新的代码

  anim.SetFloat("horizontal", Mathf.Abs(h));
  //Mathf是绝对值,设置它的状态转换

将新设置的值(horizontal)
放到刚刚创建的两条Transition里
这里写图片描述
(1)将idle到run的线的horizontal值设置为Greater(大于)0.1的速度
(2)将run到idle的线的horizontal值设置为Less(小于)0.1的速度
注意:将Has Exit Time勾去掉,不然动画结束会有延迟

然后启动游戏就会发现左右移动时会有奔跑的动作。

更改朝向

虽然左右移动有了奔跑的动作,但是会发现角色的朝向不会变
所以我们要添加代码更改它的朝向
代码添加在move脚本里的Update
原理:检测按下的是左还是右键 然后用用transform.localScale更改朝向

			 if (h > 0.05f)大于0.05就是按了右键
            {
                transform.localScale = new Vector3(1, 1, 1);//朝向右方向
            }
            else if (h < -0.05f)小于0.05就是按了左键
            {
                transform.localScale = new Vector3(-1, 1, 1);//朝向左方向  
            }

添加完后保存脚本再启动游戏就会发现按下左右键会更改朝向了

猜你喜欢

转载自blog.csdn.net/Aarondwa/article/details/82633404