Clan War Online - мобильная онлайн rpg игра про выживание.
В чате работает бот, который уведомляет об изменениях в проекте - https://t.me/clanwaronline_chat
Post #204
730
CL @clanwargame






beta 2.0.


private Vector3 SnapToGrid(Vector3 position)
{
float gridSize = 1f;
return new Vector3(
Mathf.Round(position.x / gridSize) * gridSize,
Mathf.Round(position.y / gridSize) * gridSize,
Mathf.Round(position.z / gridSize) * gridSize
);
}

Equipment хранит в себе активный блок, то есть id блока, который находится в активном слоте игрока.(a) Быстрый режим не очень точен и удобен, но зато его можно быстро включить и быстро поставить любой блок.(b) Продвинутый очень точен, но довольно медленный. Обычно строительство домов происходит в этом режиме.if (Input.touchCount > 0 && !isAdvancedBuildMode)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
Vector2 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
if (IsTouchOverUI(touch))
{
return;
}
if(_inventory.CheckItem(_equipment.ActiveBlock))
{
Vector3 clickPosition = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
Vector3 buildPosition = new Vector3((float) Math.Round(clickPosition.x),
(float) Math.Round(clickPosition.y), 0);
if(IsPlaceable(buildPosition))
{
CmdBuild(buildPosition, _equipment.ActiveBlock.Id);
_inventory.RemoveItem(_equipment.ActiveBlock, 1);
}
}
}
}

Block.cs, который является наследником от скрипта Resource.cs(писали также о нем здесь). Этот скрипт всего лишь дополняет метод SpawnItems() от Resource.cs.ScriptableObject(о нем здесь) мы выбираем тип - "Block". Других полей тут не много(скрин).Block.cs, то у него также есть все поля Resource.cs.Block.cs и сразу напишем 2 часть про управление строительством.

