146 lines
5.8 KiB
C#
146 lines
5.8 KiB
C#
// using System;
|
|
// using System.Collections;
|
|
// using System.Collections.Generic;
|
|
// using UnityEditor;
|
|
// using UnityEditor.SceneManagement;
|
|
// using UnityEngine;
|
|
// using UnityEngine.UIElements;
|
|
//
|
|
// public class MapBuildPlacer : MonoBehaviour
|
|
// {
|
|
// [HideInInspector] public GameObject startPositionObject; // 坐标起始点
|
|
// [HideInInspector] public float cellSize = 2; // 单元格大小
|
|
// [HideInInspector] public Camera mainCamera;
|
|
// [HideInInspector] public MapListener mapListener;
|
|
//
|
|
// private Collider2D hit_oldest;
|
|
// private Color sprite_render_color;
|
|
// private readonly Color sprite_render_unable_color = new Color32(166, 73, 73, 255);
|
|
// private SpriteRenderer sprite_render_children;
|
|
// private MapBuildableCell snap_grid; // 吸附的格子
|
|
// private bool is_trigger_with_has_build = false;
|
|
// private bool isSnap = false;
|
|
// private GameObject render_container;
|
|
// private Vector2Int snap_grid_position_for_SO = Vector2Int.zero; // SO的坐标数据 , 不是世界坐标
|
|
// private Transform UIContainer;
|
|
// private LayerMask buildable_layer;
|
|
// private MapPlacerItem map_placer_item;
|
|
//
|
|
// private void Awake()
|
|
// {
|
|
// gameObject.AddComponent<Rigidbody2D>().isKinematic = true;
|
|
// map_placer_item = gameObject.GetComponent<MapPlacerItem>();
|
|
// }
|
|
//
|
|
// private void Start()
|
|
// {
|
|
// render_container = transform.Find("RenderContainer").gameObject;
|
|
// sprite_render_children = transform.Find("RenderContainer/RoomSpriteRender").GetComponent<SpriteRenderer>();
|
|
// UIContainer = transform.Find("RenderContainer/UI");
|
|
// sprite_render_color = sprite_render_children.color;
|
|
// foreach (Transform ui_child in UIContainer.transform)
|
|
// {
|
|
// ui_child.GetComponent<SpriteRenderer>().color = Color.green;
|
|
// }
|
|
//
|
|
// buildable_layer = 1 << LayerMask.NameToLayer("BuildableCell");
|
|
// }
|
|
//
|
|
// private void Update()
|
|
// {
|
|
// // render_container.SetActive(); // 设置吸附状态的响应
|
|
// self_move_with_mouse_with_ray();
|
|
// }
|
|
//
|
|
// // private void self__trigger_with_already_build(MapBuildableCell snap_grid)
|
|
// // {
|
|
// // switch (buildRoomType)
|
|
// // {
|
|
// // case HomeMapSO.RoomType.CageRoom:
|
|
// // Vector2Int snap_position_ = _self_get_snap_position();
|
|
// // // is_trigger_with_has_build =
|
|
// // // mapListener.m_send_SOMap_get_placeholder_area_has_room(snap_position_, buildRoomType);
|
|
// // break;
|
|
// // default:
|
|
// // break;
|
|
// // }
|
|
// //
|
|
// // Vector2Int _self_get_snap_position() => snap_grid.m_recv_get_grid_position_with_vector2();
|
|
// // }
|
|
//
|
|
// // 跟随鼠标移动使用射线检测
|
|
// private void self_move_with_mouse_with_ray()
|
|
// {
|
|
// Vector3 mouse_world_position = mainCamera.ScreenToWorldPoint(Input.mousePosition);
|
|
// mouse_world_position.z = 0;
|
|
// RaycastHit2D hit = Physics2D.Raycast(
|
|
// origin: mouse_world_position,
|
|
// direction: Vector2.zero,
|
|
// distance: 0.1f,
|
|
// layerMask: buildable_layer);
|
|
// if (hit.collider) // 射线检测到格子, 吸附到格子坐标
|
|
// {
|
|
// if (hit.collider != hit_oldest) // 射线检测到的格子发生变化
|
|
// {
|
|
// snap_grid = hit.collider.GetComponent<MapBuildableCell>();
|
|
// hit_oldest = hit.collider;
|
|
// }
|
|
//
|
|
// mm_self_gameobject_snap_move();
|
|
// }
|
|
// else
|
|
// {
|
|
// mm_self_gameobject_free_move();
|
|
// }
|
|
//
|
|
// return;
|
|
//
|
|
// void mm_self_gameobject_snap_move() // 射线检测到格子, 吸附到格子坐标
|
|
// {
|
|
// Vector3 snap_grid_position = startPositionObject.transform.position +
|
|
// snap_grid.m_recv_get_grid_position_with_vector3() * cellSize;
|
|
// transform.position = snap_grid_position;
|
|
// isSnap = true;
|
|
// snap_grid_position_for_SO = snap_grid.m_recv_get_grid_position_with_vector2();
|
|
// is_trigger_with_has_build = mapListener.m_send_SOMap_trigger_placeholder_area_has_room(
|
|
// snap_grid_position_for_SO, map_placer_item
|
|
// );
|
|
// sprite_render_children.color = is_trigger_with_has_build ? sprite_render_unable_color : sprite_render_color; // 更改SR颜色
|
|
// }
|
|
//
|
|
// void mm_self_gameobject_free_move() // 射线没有检测到格子, 自由移动
|
|
// {
|
|
// sprite_render_children.color = sprite_render_unable_color; // 更改sr为不可建造的颜色
|
|
// transform.position = mouse_world_position;
|
|
// isSnap = false;
|
|
// is_trigger_with_has_build = true;
|
|
// snap_grid_position_for_SO = Vector2Int.zero;
|
|
// }
|
|
// }
|
|
//
|
|
// public Vector2Int m_recv_placer_get_snap_grid_position_for_SO() => snap_grid_position_for_SO;
|
|
//
|
|
// public bool m_recv_placer_is_snap_to_grid() => isSnap;
|
|
//
|
|
// public bool m_recv_is_trigger_with_has_build() => is_trigger_with_has_build;
|
|
//
|
|
// // private void self_on_trigger_event(Collider2D other, bool status)
|
|
// // {
|
|
// // // 检测是否与某个图层的碰撞器相交
|
|
// // if (other.gameObject.layer == LayerMask.NameToLayer("AlreadyBuild"))
|
|
// // {
|
|
// // is_trigger_with_has_build = status;
|
|
// // }
|
|
// // }
|
|
//
|
|
//
|
|
// // private void OnTriggerStay2D(Collider2D other)
|
|
// // {
|
|
// // self_on_trigger_event(other, true);
|
|
// // }
|
|
// //
|
|
// // private void OnTriggerExit2D(Collider2D other)
|
|
// // {
|
|
// // self_on_trigger_event(other, false);
|
|
// // }
|
|
// } |