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

地图


map.png

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

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

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

英雄


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

新建一个 Animator Controller。添加 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";

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.ATTACK1);
        }
    }

特别要判断当前的 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 位置移动。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

C++ 实现银行排队服务模拟

教程简介:使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。作为可选进阶,这个模型同时...

4785
来自专栏小樱的经验随笔

CTF---Web入门第四题 Forms

Forms分值:10 来源: Ph0enix 难度:易 参与人数:4945人 Get Flag:2776人 答题人数:2824人 解题通过率:98% 似乎有...

30711
来自专栏me的随笔

【译】《Clean C#》

本文是《Clean C#》一书译文的序言,阅读译文请移步至:《Clean C#》译文。

1212
来自专栏ytkah

利用excel数据透视表实现快速统计相关数据

  昨天ytkah在做数据报表时需要做一些具体统计数字:公司每天都有人申请铅笔、笔记本等一些文具用品,现在想要统计每天申请铅笔多少支、笔记本多少本,如下图所示,...

30010
来自专栏GopherCoder

专栏:007:xpath使用及其实战

1313
来自专栏日常学python

20行代码制作字符画版小黄鸭表情包 | 文末送书抽奖结果

前段时间,一只可爱的小黄鸭火起来了,据说是抖音上一位黄衣小姐姐模仿小黄鸭的动作而走红。这只动作呆萌的小黄鸭表情包也跟着火起来了,小黄鸭表情包也由一只变成多只,颜...

1262
来自专栏张善友的专栏

ASP.NET BBcode

BBCode是Bulletin Board Code的缩写,有译为「BB代码」者,属于轻量标记语言(Lightweight Markup Language)的一...

2095
来自专栏逸鹏说道

C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,...

3468
来自专栏小轻论坛

3个少有人知的word小技巧,5秒学会,超实用!

一提到娱乐明星八卦、军事野史鸡汤,大家都迫不及待乖巧等听,哪怕挤出吃饭睡觉时间也要认真关注。提到工作学习技能、素质锻炼提升,很多人就连连摆手一脸抗拒,没时间没精...

522
来自专栏小詹同学

爬点重口味的 。

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,对面的女孩看过来(邪恶的一笑),让人想入非非啊,一看卧槽,左边这妹子彻底赢了,这(**)这么大,还这么漂亮,...

952

扫码关注云+社区