中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做網站的需要什么要求故事式的軟文廣告例子

做網站的需要什么要求,故事式的軟文廣告例子,wordpress antivirus,靜態(tài)網站建設參考文獻目錄 一、準備工作 1.插件導入 2.資源導入 二、相關組件介紹 1.Grid組件 2.Tilemap組件 3.Tile 4.Tile Palette 5.Brushes 三、動態(tài)創(chuàng)建地圖 四、其他功能 1.移動網格上物體 2.拖拽縮放地圖 Unity Tilemap系統(tǒng)為2D游戲開發(fā)提供了一個直觀且功能強大的平臺&#xff…

目錄

一、準備工作

1.插件導入

2.資源導入

?二、相關組件介紹

1.Grid組件

2.Tilemap組件

3.Tile

4.Tile Palette

5.Brushes

三、動態(tài)創(chuàng)建地圖

四、其他功能

1.移動網格上物體

2.拖拽縮放地圖


????????Unity Tilemap系統(tǒng)為2D游戲開發(fā)提供了一個直觀且功能強大的平臺,使得創(chuàng)建復雜且美觀的游戲世界變得更加容易,Unity的Tilemap系統(tǒng)經過優(yōu)化,能夠高效地處理大量Tiles,確保游戲在各種設備上都能流暢運行。

一、準備工作

1.插件導入

2.資源導入

? ? ? ? 提供一個我找了半天才找到的tile圖像資源。因為我要做等距透視地圖,所以需要是菱形,并且圖片長=寬。

????????當最終繪制的地圖不合適時,可以調整圖像的Pivot:

?二、相關組件介紹

1.Grid組件

????????Grid組件是Unity中用于創(chuàng)建和管理網格(Grid)的基礎組件,特別適用于2D游戲開發(fā)中的Tilemap系統(tǒng)。網格布局可以是矩形、六邊形等。

  • Cell Size

????????開發(fā)者可以定義每個網格單元的大小。這對于確保Tiles和其他元素在正確的位置上顯示非常重要。

  • Cell Gap

????????允許開發(fā)者在網格單元之間設置間隙,從而調整元素之間的距離。這樣可以創(chuàng)建更復雜的布局效果。

  • CellLayout?

????????枚舉包括以下幾種布局類型:

  1. Rectangle:矩形布局。單元格以矩形的形式排列,這是最常見的一種布局方式。
  2. Hexagon:六邊形布局。單元格以六邊形的形式排列,通常用于需要六邊形網格的游戲或應用。
  3. Isometric:等距菱形布局。單元格以等距(菱形)的形式排列,常用于等距視角的游戲,例如模擬類游戲。
  4. IsometricZAsY:等距Z軸作為Y軸布局。這種布局類似于等距布局,但Z軸值將被添加為Y值。這種布局通常用于需要特殊等距視角效果的場景。
  • cellSwizzle

????????用于重新排列網格單元格的坐標。具體來說,?允許將默認的 XYZ 單元格坐標重新排序為不同的排列方式。以下是一些可能的重排選項:

  1. XYZ:保持單元格位置不變。
  2. XZY:將單元格位置從 XYZ 重排為 XZY。
  3. YXZ:將單元格位置從 XYZ 重排為 YXZ。
  4. YZX:將單元格位置從 XYZ 重排為 YZX。
  5. ZXY:將單元格位置從 XYZ 重排為 ZXY。
  6. ZYX:將單元格位置從 XYZ 重排為 ZYX。

????????Grid組件通常與Tilemap組件一起使用,以實現(xiàn)復雜的2D場景設計。Tilemap會自動對齊到Grid定義的網格上,使得繪制和管理Tiles變得更加容易。Grid組件提供了一些方便的方法,用于在世界坐標、局部坐標和網格坐標之間進行轉換。這使得在網格上定位對象變得更加簡單和直觀。

????????總結來說,Grid組件為Unity中的2D游戲開發(fā)提供了一個強大且靈活的基礎結構,使得創(chuàng)建和管理基于網格的場景變得更加簡單和高效。

2.Tilemap組件

????????Unity的Tilemap系統(tǒng)是一個強大的工具,用于在2D游戲開發(fā)中創(chuàng)建和管理網格化的游戲世界。Tilemap組件是用于在場景中繪制瓦片(Tiles)的基礎組件。它可以與Grid組件一起使用,以定義網格的大小和形狀。

3.Tile

????????Tilemap系統(tǒng)中的基本構建塊。每個Tile代表一個小的圖像或動畫,可以重復使用來創(chuàng)建更大的圖案或場景。Tiles可以包含碰撞信息、顏色等屬性。

4.Tile Palette

????????一個用戶界面工具,允許開發(fā)者創(chuàng)建、編輯和管理Tiles。開發(fā)者可以將Tiles拖放到Tile Palette中,然后使用畫筆工具將它們繪制到Tilemap上。

5.Brushes

????????Brushes是用于在Tilemap上繪制Tiles的工具。Unity提供了多種預定義的Brushes,例如普通畫筆、隨機畫筆等,開發(fā)者也可以創(chuàng)建自定義Brushes以滿足特定需求。

  • Default Brush:默認的繪畫刷,用于基本的Tile繪制操作。
  • GameObject Brush:用于在Tilemap上繪制GameObjects,而不僅僅是Tiles。
  • Group Brush:允許用戶將多個Tiles組合在一起,并作為一個整體進行繪制。
  • Random Brush:可以隨機選擇預定義的Tiles進行繪制,適合創(chuàng)建更自然和多樣化的Tilemap。
  • Line Brush:用于繪制直線形狀的Tiles,方便創(chuàng)建路徑或直線結構。

????????總之,Unity Tilemap系統(tǒng)為2D游戲開發(fā)提供了一個直觀且功能強大的平臺,使得創(chuàng)建復雜且美觀的游戲世界變得更加容易,Unity的Tilemap系統(tǒng)經過優(yōu)化,能夠高效地處理大量Tiles,確保游戲在各種設備上都能流暢運行。

三、動態(tài)創(chuàng)建地圖

1.創(chuàng)建空物體Grid,添加Grid組件。

2.創(chuàng)建Grid的子物體Tilemap,添加Tilemap及Tilemap Renderer組件。

3.代碼展示。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;public class CreatTail : MonoBehaviour
{public Tilemap tilemap;public TileBase[] tiles; // 一個包含多個不同類型瓦片的數(shù)組int tileIndex = 0;private void Start(){GenerateMap();}void GenerateMap(){for (int x = 0; x < 20; x++){for (int y = 0; y < 21; y++){tileIndex = tileIndex == 0 ? 1 : 0;SetTile(new Vector3Int(x - 10, -y + 10, 0), tiles[tileIndex]);}}#if UNITY_EDITORstring prefabPath = "Assets/Prefabs/Tilemap.prefab";//動態(tài)制作預制體UnityEditor.PrefabUtility.SaveAsPrefabAsset(tilemap.gameObject, prefabPath);#endif}void SetTile(Vector3Int position, TileBase tile){tilemap.SetTile(position, tile);}
}

4.效果展示

四、其他功能

1.移動網格上物體

? ? ? ? 可移動的物體設置layer為第7層,并將下方代碼拖到該物體身上。當移動物體時,如果目標格子有物體,則不能放置。

using UnityEngine;
using UnityEngine.Tilemaps;public class DragManager : MonoBehaviour
{private bool isDragging = false;private Vector3 offset;private Camera mainCamera;private Vector3 lastPos;void Start(){mainCamera = Camera.main;}void OnMouseDown(){isDragging = true;offset = transform.position - GetMouseWorldPosition();lastPos=transform.position;}void OnMouseUp(){isDragging = false;// 獲取鼠標位置對應的Tilemap位置Tilemap tilemap = FindObjectOfType<Tilemap>();Vector3Int cellPosition = tilemap.WorldToCell(GetMouseWorldPosition());// 將物體放置到格子中心//transform.position = tilemap.GetCellCenterWorld(cellPosition);//transform.position=new Vector3 (transform.position.x,transform.position.y,0);Vector3 targetPosition = tilemap.GetCellCenterWorld(cellPosition);targetPosition.z = 0;Collider2D[] hitCollider = Physics2D.OverlapPointAll((Vector2)targetPosition);if (hitCollider.Length<=0){transform.position = targetPosition;}else{Debug.Log("Target position already occupied by another object.");foreach (var item in hitCollider){Debug.Log(item.name);}if (hitCollider.Length==1&& hitCollider[0].name==transform.name){transform.position = targetPosition;}else{transform.position = lastPos;}}}void Update(){if (isDragging){Vector3 targetPosition = GetMouseWorldPosition() + offset;targetPosition.z = -1;transform.position = targetPosition;}}private Vector3 GetMouseWorldPosition(){Vector3 mouseScreenPosition = Input.mousePosition;mouseScreenPosition.z = -9;// mainCamera.nearClipPlane; // 確保z軸值正確return mainCamera.ScreenToWorldPoint(mouseScreenPosition);}
}

2.拖拽縮放地圖

? ? ? ? 拖拽地圖時,如果焦點在物體身上,則不拖拽。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GameController : MonoBehaviour
{public float zoomSpeed = 0.1f;  // 縮放速度public float minZoom = 1f;    // 最小縮放值public float maxZoom = 3f;      // 最大縮放值private Vector2 dragOrigin;private Camera mainCamera;public bool drag;public float mapLength = 10f;   public float mapWidth = 10f;private void Start(){mainCamera = Camera.main;maxZoom = mainCamera.orthographicSize;}void Update(){
#if UNITY_EDITOR || UNITY_STANDALONEHandleMouseInput();
#elif UNITY_ANDROID || UNITY_IOSHandleTouchInput();
#endif}#if UNITY_EDITOR || UNITY_STANDALONEprivate void HandleMouseInput(){// 放大/縮小if (Input.mouseScrollDelta.y != 0){//Debug.Log(Input.mouseScrollDelta.y);Zoom(Input.mouseScrollDelta.y * zoomSpeed);}// 拖拽屏幕if (Input.GetMouseButtonDown(0)){Vector3 ray = Camera.main.ScreenToWorldPoint(Input.mousePosition);RaycastHit2D hit = Physics2D.Raycast(ray, Vector2.zero, 100, 1 << 7);// 檢查是否有物體被射線擊中if (hit.collider != null){Debug.Log("Hit " + hit.collider.gameObject.name);}else{dragOrigin = Input.mousePosition;drag = true;}return;}//if (Input.GetMouseButtonDown(0))//{//    dragOrigin = Input.mousePosition;//    return;//}if (!Input.GetMouseButton(0)) { drag = false;return; }if (drag){Vector3 difference = mainCamera.ScreenToViewportPoint((Vector2)Input.mousePosition - dragOrigin);Vector3 move = new Vector3(difference.x * mainCamera.orthographicSize, difference.y * mainCamera.orthographicSize, 0);mainCamera.transform.Translate(-move, Space.World);dragOrigin = Input.mousePosition;}}
#endif#if UNITY_ANDROID || UNITY_IOSprivate void HandleTouchInput(){if (Input.touchCount == 2){Touch touchZero = Input.GetTouch(0);Touch touchOne = Input.GetTouch(1);Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;float prevMagnitude = (touchZeroPrevPos - touchOnePrevPos).magnitude;float currentMagnitude = (touchZero.position - touchOne.position).magnitude;float difference = currentMagnitude - prevMagnitude;Zoom(difference * zoomSpeed);}if (Input.touchCount == 1){Touch touch = Input.GetTouch(0);if (touch.phase == TouchPhase.Began){Vector3 ray = Camera.main.ScreenToWorldPoint(Input.mousePosition);RaycastHit2D hit = Physics2D.Raycast(ray, Vector2.zero, 100, 1 << 7);//只檢測可拖拽的物體層if (hit.collider != null){Debug.Log("Hit " + hit.collider.gameObject.name);}else //沒有點擊到物體,則拖拽屏幕{dragOrigin = touch.position;drag = true;}return;}if (touch.phase != TouchPhase.Moved){drag = false;return;}if (drag){Vector3 difference = mainCamera.ScreenToViewportPoint(touch.position - dragOrigin);Vector3 move = new Vector3(difference.x * mainCamera.orthographicSize, difference.y * Camera.main.orthographicSize, 0);mainCamera.transform.Translate(-move, Space.World);dragOrigin = touch.position;}}}
#endifprivate void Zoom(float increment){
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_ANDROID || UNITY_IOSCamera.main.orthographicSize = Mathf.Clamp(mainCamera.orthographicSize - increment, minZoom, maxZoom);
#endif}
}

?

http://www.risenshineclean.com/news/55819.html

相關文章:

  • 一個中介平臺網站的建設費hao123網址導航
  • 蕭山網站建設爭鋒網絡迅雷磁力
  • 北京南站地鐵網站推廣優(yōu)化之八大方法
  • 公司網站建設應注意深圳推廣公司推薦
  • 網站建設費屬于什么稅目域名注冊管理機構
  • 獵聘做簡歷的網站收費靠譜阿里巴巴關鍵詞排名優(yōu)化
  • php網站怎么做偽靜態(tài)建筑設計網站
  • 網站推廣咋做的網站建設黃頁視頻
  • 怎么用lls做網站排名seo公司
  • 網站推廣東莞網站競價推廣怎么做
  • h5網站建設短鏈接
  • dede cms 網站模板谷歌外貿平臺
  • 做網站圖片用什么格式網絡營銷第三版課本
  • b站 的網站 怎么做著名的營銷成功的案例
  • 深圳網站建設公司招聘b2b網站排名
  • 做vi網站品牌設計
  • 常州網站制作機構今日熱點新聞事件摘抄
  • 福建閩東建設網站如何讓關鍵詞排名靠前
  • 可視化建網站河南網站建設哪里好
  • 同個主體新增網站備案產品推廣方式
  • 廣西網站怎么制作什么推廣平臺好
  • 做pc端網站案例網站搜什么關鍵詞
  • 太原cms建站系統(tǒng)百度寫一篇文章多少錢
  • 網站圖片怎么優(yōu)化百度推廣區(qū)域代理
  • wordpress的.htaccess北京優(yōu)化seo
  • 東莞做網站找微客巴巴阿里指數(shù)網站
  • 做網站怎么掙錢賺錢職業(yè)培訓機構排名
  • 成都網站開發(fā)的公司網頁制作教程視頻
  • 建設大型網站seo推廣網絡
  • 購物網站如何做性能測試上海百度競價