Skip to content

Instantly share code, notes, and snippets.

View Tunied's full-sized avatar
🎖️
Working on my new game

Eran Tunied

🎖️
Working on my new game
View GitHub Profile
@Tunied
Tunied / FileUtils_ForEachFile.cs
Created December 10, 2022 14:14
Load给定后缀的所有文件
var rootPath = EMG_FileUtils.PersistentDataPath + $"/{ProjectName}/Script";
if (!Directory.Exists(rootPath))
{
Directory.CreateDirectory(rootPath);
}
var allFilePath = Directory.GetFiles(rootPath, "*.lua");
foreach (var filePath in allFilePath)
{
Shader "Eran/DrawProceduralIndirect/Basic"
{
SubShader
{
Tags
{
"RenderPipeline"="UniversalPipeline"
"RenderType"="Opaque"
"Queue"="Geometry"
}
using System.Collections.Generic;
using UnityEngine;
namespace Code
{
/// <summary>
/// The simplest example to show how to use Graphics.DrawProceduralIndirect
///
/// What it does:
///
@Tunied
Tunied / ParabolaMove.cs
Created November 15, 2022 04:17
已知起点和终点进行抛物线移动
using Sirenix.OdinInspector;
using UnityEngine;
public class PreGame_Mono_ParabolaMove : MonoBehaviour
{
[OnValueChanged(nameof(DoRefresh))]
public Vector3 Distance = Vector3.one;
[OnValueChanged(nameof(DoRefresh)), Range(0, 1)]
public float DistancePercent = 0.5f;
@Tunied
Tunied / RayHitPlane.cs
Last active September 25, 2022 03:53
找寻到一个Ray入射到给定Plane上的入射点
var ray = Game.MainGame.Logic.Camera.UnityCamera.ScreenPointToRay(Mouse.current.position.ReadValue());
mGroundPlane.Raycast(ray, out var hitDistance);
var hitPoint = ray.GetPoint(hitDistance);
@Tunied
Tunied / OrbitCamera.cs
Created September 16, 2022 05:01
相机绕着某个目标移动
private void OrbitCamera()
{
//orbit camera - 让相机在一个固定水平高度上绕着物体旋转.用于第三人称视角时候人物跟踪
//lookAngle为定义的视角new Vector(45,30,0) 表示离地角度是45°,水平旋转角度是30°
//因为是正交相机,所以相机距离物体远近无异议,所以才用常量20f作为距离
var lookQuaternion = Quaternion.Euler(lookAngle);
var lookDirection = lookQuaternion * Vector3.forward;
var lookPosition = transform.position - lookDirection * 20f;
Camera.SetPositionAndRotation(lookPosition, lookQuaternion);
}
@Tunied
Tunied / Mono_CompoundTrigger.cs
Last active August 29, 2022 10:45
CompoundTrigger for demonstration
using System.Collections.Generic;
using UnityEngine;
public class Mono_CompoundTrigger : MonoBehaviour
{
public class ColliderInfo
{
public Collider target;
public int count;
}
@Tunied
Tunied / GreedyMeshGenerator.cs
Created August 27, 2022 08:46
在XZ平面上根据给定Tile信息生成Greedy优化后的Mesh
using System.Collections.Generic;
using Code.CopyEngine.Core.Utils;
using UnityEngine;
namespace Code.Utils.Tilemap2Mesh
{
public class Tilemap2Mesh_LayerMeshGenerator
{
public Dictionary<Vector2Int, bool> mMarkDic = new();
@Tunied
Tunied / Tilemap_LoopEachTile.cs
Created April 12, 2022 02:55
遍历给定Tilemap下的所有非空Tile,根据Tile的Name做相应的操作
var tileMap = _t;
var bounds = tileMap.cellBounds;
var allTiles = tileMap.GetTilesBlock(bounds);
for (var x = 0; x < bounds.size.x; x++)
{
for (var y = 0; y < bounds.size.y; y++)
{
var tile = allTiles[x + y * bounds.size.x];
if (tile == null) continue;
@Tunied
Tunied / GenOptimizerMesh.cs
Created April 19, 2022 08:59
生成优化过的Mesh
/// <summary>
/// 生成用于扫描的纹理
/// </summary>
private static Mesh GenNavMesh()
{
var walkAreaList = CEVoxelMeshGreedyOptimizer.Optimize(Game.Common.Map.MapSizeX, Game.Common.Map.MapSizeY, IsSameTile, IsHaveTile);
var vertices = new List<Vector3>();
var triangles = new List<int>();
var normals = new List<Vector3>();