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 条评论
登录 后参与评论

相关文章

来自专栏韩东吉的Unity杂货铺

零基础入门 41:Hierarchy也可以这样玩

上一篇给大家说了下Inspector如何禁用RectTransform属性修改的做法,今天就来分享下对Hierarchy的另一种操作。

805
来自专栏张善友的专栏

ASP.NET BBcode

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

1905
来自专栏小筱月

数据量庞大的分页穿梭框实现

但是第二个分页的 demo 没有,在上一家公司匆匆解决后,没有写入自己的 GitHub,有点可惜...

1432
来自专栏GopherCoder

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

1213
来自专栏落影的专栏

Audio Unit播放PCM文件

前言 相关文章: 使用VideoToolbox硬编码H.264 使用VideoToolbox硬解码H.264 使用AudioToolbox编码AAC 使...

4396
来自专栏Golang语言社区

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

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

4525
来自专栏逸鹏说道

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

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

3248
来自专栏Web 开发

知呼前端工程师面试题目

第三题的答案(我的答案有点问题,等弄好了再上传 要想完美,先出主体,通过负margin+双容器)

750
来自专栏云飞学编程

跟我学爬虫,看大神不到30行代码做的一个简单爬虫!

已经看了那么多基础知识了,下面我们做几个实战项目来挑战一下吧。这次为大家带来,Python爬取校花网美女图片的例子。

1412
来自专栏Golang语言社区

Go语言实现控制台贪吃蛇

各位好 今天在关注GO相关文章的时候,看到一篇关于go语言实现贪吃蛇的文章,原文地址:http://outofmemory.cn ;尝试编译了...

3797

扫码关注云+社区