Unity 3D 开发《王者荣耀》:英雄移动

王者荣耀资源


资源来自网络

链接: https://pan.baidu.com/s/1iNo7MXO1bfNi1rvp6Mc4WQ 密码: h1q6

地图


map.png

导入地形资源包,拖动一个 5V5 的地图到 Unity 上面,reset 重置地图位置。

导入模型资源包,拖入草,制作成草丛,再 duplicate 3 个,放到红蓝 Buffer 的附近。

拖入敌我双方防御塔,上不同的材质。复制几份,把中路塔放满。

英雄


拖入 Ali 到地图上面,放到河道中间。

Animator Controller

https://unity3d.com/cn/learn/tutorials/topics/animation/animator-controller

在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller,Animator Controller包含了以下几种功能:

  • 可以对多个动画进行整合;
  • 使用状态机来实现动画的播放和切换;
  • 可以实现动画融合和分层播放;
  • 可以通过脚本来对动画播放进行深度控制;

Animator组件

我们需要播放动画的角色都需要添加Animator组件,该组件即为我们控制动画的接口。

  • Controller:使用的Animator Controller文件。
  • Avatar:使用的骨骼文件。
  • Apply Root Motion:绑定该组件的GameObject的位置是否可以由动画进行改变(如果存在改变位移的动画)。
  • Update Mode:更新模式:Normal表示使用Update进行更新,Animate Physics表示使用FixUpdate进行更新(一般用在和物体有交互的情况下),Unscale Time表示无视timeScale进行更新(一般用在UI动画中)。
  • Culling Mode:剔除模式:Always Animate表示即使摄像机看不见也要进行动画播放的更新,Cull Update Transform表示摄像机看不见时停止动画播放但是位置会继续更新,Cull Completely表示摄像机看不见时停止动画的所有更新。

新建一个 Animator Controller

发现的有3个默认的状态,这些状态是Unity自动帮我们创建的同时也无法删除:

  • Entry:表示当进入当前状态机时的入口,该状态连接的状态会成为进入状态机后的第一个状态;
  • Any State:表示任意的状态,其作用是其指向的状态是在任意时刻都可以切换过去的状态;
  • Exit:表示退出当前的状态机,如果有任意状态指向该出口,表示可以从指定状态退出当前的状态机;

从资源包里面添加 5 种状态,不知道怎么回事,run 这个状态无法添加,我暂时添加了 idle5, attack1, attack2, apell1, dancel 这 5 种状态。

新建一个 Int 形变量 state 初始值为 0,表示 idle 状态,idle5, attack1, attack2, apell1, dancel 依次为 0-4 这几种状态。

5 种状态之间相互 Make Transition,添加状态变化的条件。

更新: amumu 可以 run,于是我就按 amumu 创建英雄。

public class AnimState : MonoBehaviour
{
    public const int IDLE = 0;
    public const int RUN = 1;
    public const int ATTACK1 = 2;
    public const int ATTACK2 = 3;
    public const int DANCE = 4;
}

EasyTouch 虚拟摇杆

如果导入报错:

Assets/EasyTouch/Plugins/Editor/HTEditorToolKit.cs(166,13): error CS0571: `UnityEngine.Object.name.set': cannot explicitly call operator or accessor

需要把

myTexture.set_name("Color Texture by Hedgehog Team");

改为:

myTexture.name = "Color Texture by Hedgehog Team";

添加两个 empty object,把EasyTouch 和 EasyJoystick 分别拖上去。

EasyJoystick.

把 Joystick 交互类型从 Direct(直接) 改为 Event Notification(事件通知)。

  • Joystick axes properties & event

  • Interaction type -> Event Notification

MoveController 添加到 Player(amumu) 上面

首先需要创建一个新动画系统,并在 start() 方法中初始化。

    private Animator ani;

    void Start()
    {
        ani = GetComponent<Animator>();
    }

在摇杆运动或者停下的时候,让 Player 运动和待定。

 void OnJoystickMoveEnd(MovingJoystick move)
    {
        if (move.joystickName == "EasyJoystick")
        {
            // GetComponent<Animation>().CrossFade("idle");
            ani.SetInteger("state", AnimState.IDLE);
        }
    }
    void OnJoystickMove(MovingJoystick move)
    {
        Debug.LogError("-------------" + move.joystickName);
        if (move.joystickName != "EasyJoystick")
        {
            return;
        }

        Debug.LogError("、、、、、、、、、、、、、、、、、-");

        float joyPositionX = move.joystickAxis.x;
        float joyPositionY = move.joystickAxis.y;

        if (joyPositionY != 0 || joyPositionX != 0)
        {
            //设置角色的朝向(朝向当前坐标+摇杆偏移量)
           transform.LookAt(new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY));
            //移动玩家的位置(按朝向位置移动)
            transform.Translate(Vector3.forward * Time.deltaTime * 5);
            //播放奔跑动画
            // GetComponent<Animation>().CrossFade("run");
            ani.SetInteger("state", AnimState.RUN);
        }
    }

特别要判断当前的 move.joystickName 代码中的和项目里面的名称是否相同。

这时候运行游戏,再控制摇杆,player 是可以运动的。

相机跟随

player 移动的时候,地图没有更新,player 会跑到地图外面,所以我们还要再改进一下,让相机跟随 player 移动。

有两种方法

  1. 第一种是为相机添加脚本,是我们自己编写的脚本。
  2. 第二种是添加标准资源包里面的 SmoothFollow 脚本。
Unity 2018.1.1f1 (64bit) - SampleScene.unity - ArenaOfValor - PC, Mac & Linux Standalone_ _DX11_ 2018_5_23 23_31_42.gif

创建 Camera C# 脚本 CameraFollow.cs:

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

public class CameraFollow : MonoBehaviour {

    [SerializeField]
    private Transform player;
    private float cameraX;
    private float cameraZ;

    public float y = 10;
    public float z = 5;

    void Update()
    {
        if (player)
        {
            cameraX = player.position.x;
            cameraZ = player.position.z;
            this.transform.position = new Vector3(cameraX, y, cameraZ + z);
        }
    }
}

相机的高度 y 保持不变,x 和 z 跟随 player 位置移动。

最好的方法还是使用系统带的 SmoothFollow 脚本。

windows电脑上传到 GitHub,报 403 错误,有时候 GitHub 也访问不了,先用 macOS 上传吧。

在 macOS 上面也可以运行,自动提示把目标从 Windows 切换到 Mac。

明天操纵英雄攻击。

源码:https://github.com/iOSDevLog/ArenaOfValor

简宝玉写作群日更打卡第 33 天

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,306评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,657评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,928评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,688评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,105评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,024评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,159评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,937评论 0 212
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,689评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,851评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,325评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,651评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,364评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,192评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,985评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,154评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,955评论 2 279

推荐阅读更多精彩内容