创建一个新项目

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

unity 横板改竖版 unity横版游戏教程_右键

项目资源

将资源导入到unity里。

游戏场景

unity 横板改竖版 unity横版游戏教程_ide_02


(1)将素材拖进场景里,在右边的Sprite Renderer组件里的color可以随意改变颜色。

(2)给这个对象添加box collider2D组件,因为这个将当做地板。

背景颜色与游戏视野

2D游戏的背景颜色可以在Main camera对象里的background里更改

unity 横板改竖版 unity横版游戏教程_unity 横板改竖版_03


Projection要改为Orthographic(因为这是2D视野)

感觉主角过大的话可以把摄像头尺寸调大(让视野更宽广)将Size调大即可

玩家角色动画

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

unity 横板改竖版 unity横版游戏教程_右键_04


点击玩家角色 点开Game旁边的Animation

创建新的动画 名为idle

创建完以后点击Add Property → Sprite Renderer → Size(添加一个曲线)

将待机的素材放进曲线里

改Sample可以让动画切换的速度变慢

需要注意的是在第60秒可能会有原素材在里面 要删掉

unity 横板改竖版 unity横版游戏教程_unity 横板改竖版_05


其他动画同理

一共有待机,跑步,跳起,跳下,滑行等动画。

玩家角色

unity 横板改竖版 unity横版游戏教程_ci_06


(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 (如果之前有正确创建的话)

unity 横板改竖版 unity横版游戏教程_右键_07


我们首先要做的是将待机状态转化为奔跑:

右键idle状态 → Make Transition → 连接到run状态 →再右键run状态

→ MakeTransition →连接到idle状态

这样状态就可以互相切换了

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

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

将新设置的值(horizontal)

放到刚刚创建的两条Transition里

unity 横板改竖版 unity横版游戏教程_unity 横板改竖版_08


(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);//朝向左方向  
            }

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