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

相关文章

来自专栏王二麻子IT技术交流园地

《跟我学IDEA》四、配置模板(提高代码编写效率)

上一篇博文,我们学习了idea的一些实用配置,相信大家也对idea这个开发工具有了一个大概的了解。今天我们来学习模板的配置,idea提供很多模板从而提高编写代码...

5417
来自专栏walterlv - 吕毅的博客

生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型

发布于 2018-01-31 05:38 更新于 2018-05...

442
来自专栏生信宝典

CIRCOS增加热图、点图、线图和区块属性

CIRCOS图在有了染色体信息界定绘图区域后,就可以向里面添加离散数据如标记特定的区域或连续数据如展示修饰的丰度等。 经过前面部分对CIRCOS基本安装,最简单...

2367
来自专栏hotqin888的专栏

ppt(Powerpoint)中插入swf(flash)动画方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

872
来自专栏V站

WordPress丨常见函数及拓展模板函数大全

wordpress模板是由PHP语句组成,很多不懂代码的站长都被PHP复杂的代码难倒,难以自己开发个性化的模板。其实想开发一个wordpress模板并不是太难,...

1573
来自专栏天天P图攻城狮

Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 的翻译 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G、3G网络或者在以字节付费的网...

26510
来自专栏乐百川的学习频道

JavaFX 简介

JavaFX 介绍 一提到Java的图形界面库,我们通常听到的都是Swing,或者更老一点的AWT,包括很多书上面介绍的也都是这两种。很多学校、培训班教学的也是...

3237
来自专栏酷玩时刻

微信公众号开发之如何一键导出微信所有用户信息到Excel

在getOpenIds(Stirng next_openid) 方法中迭代(一次拉取调用最多拉取10000个关注者的OpenID)获取所有的openId并返回一...

1793
来自专栏程序员互动联盟

【专业技术第九讲】java Applet工作原理及使用方法

存在问题: 有群友疑惑HTML中的<applet>标签是干什么的? 解决方案: Applet是采用Java编程语言编写的小应用程序,该程序可以包含在 HTML(...

3306
来自专栏腾讯Bugly的专栏

Android 减包 - 减少APK大小

本文来自“天天P图攻城狮”公众号(ttpic_dev) 本文是对Google官方文档 Reduce APK Size 的翻译,查看英文原文(需要翻墙) 译者简介...

3666

扫码关注云+社区