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;
}
如果导入报错:
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";
把 Joystick 交互类型从 Direct(直接) 改为 Event Notification(事件通知)。
*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 移动。
有两种方法
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 天`