2025-07-01
------------------------------------------
1: 怪物编辑器
2: 怪物路径-是先按下P键,再点击鼠标左键。
2025-07-01
------------------------------------------
1: 怪物编辑器
2: 怪物路径-是先按下P键,再点击鼠标左键。
2025-07-01
-------------------------------------
1: 先让小兵动起来。
2: 解决小怪移动路径的问题。
保卫萝卜,整体框架。
-----------------------------
2025-06-27
1: 先替换背景
2: 再替换防御塔
3: 最后替换怪物
Unity 使用 Z-X-Y 的旋转顺序来表示欧拉角的旋转。这意味着:
这种顺序也被称为 Tait-Bryan 角度,是许多 3D 引擎和系统中常用的旋转表示方式。Unity 的 Transform.eulerAngles 属性和 Quaternion.Euler 方法都遵循这个顺序。
画板程序
GPU 图形处理器 和算法
CPU 计算处理器
独立显卡,多用于游戏
集成显卡,CPU和GPU共同使用内存。
核心玩法:3C实现
叉乘的意义 判断三角面片朝向
左手坐标系和右手坐标系不同。 产生方向不同,按右手坐标系来。
垂直向量生成
叉乘结果的模长等于两向量构成的平行四边形的面积,
取模长的一半即可
若两向量叉乘结果为零向量,则它们共线或反向
叉乘方向反映从第一个向量到第二个向量的旋转方向
法线是垂直,正交也是垂直
点积 也就是点乘 其实就是 向量之间的投影。
通过夹角判断两个物体的前后关系。
搞改革你反射
漫反射
shader 实时编译。
多用float Half
写法要符合规范。
建议使用SV_Position.
不知道再讲什么。
rgb 红绿蓝。
有点不知道在干啥。
Shader "Unlit/003"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Color("Color" , Color) = (1,1,1,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//#include "UnityCG.cginc"
//只有在CGPROGRAM内再次定义一个与属性块内名字与类型相同的变量,属性块对应的变量才能起作用
fixed4 _Color;
struct a2v//a application dao vert
{
//用模型顶点填充v变量
float4 vertex:POSITION;
//用模型的法线填充n变量
float3 normal:NORMAL;
//用模型的第一套uv填充texcoord
float4 texcoord: TEXCOORD0;
};
struct v2f// v vert dao frag
{
//SV_POSITION语义告诉unity : pos为裁剪空间中的位置信息
float4 pos:SV_POSITION;
//COLOR0 语义可以储存颜色信息
fixed3 color:COLOR0;
};
v2f vert(a2v v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
//将 【-1,1】转变为【0,1】 x/2 + 0.5;
o.color = v.normal * 0.5 +fixed3(0.5,0.5,0.5);
return o;
}
fixed4 frag(v2f i):SV_TARGET
{
fixed3 c = i.color;
//.xyzw .rgba .x .y .xw
c*=_Color.rgb;
//return fixed4(0,0,0,1);
return fixed4(c, 1);
}
ENDCG
}
}
}
vertex 顶点
fragment 片元
// 定义Shader路径和名称(在材质面板中的显示层级)
Shader "Unlit/002"
{
// 材质属性声明块(会在Inspector面板显示)
Properties
{
// 声明2D纹理属性,默认白色纹理(实际未使用)
_MainTex ("Texture", 2D) = "white" {}
}
// 子着色器块(核心逻辑)
SubShader
{
// 渲染标签设置(影响渲染管线行为)
Tags {
"RenderType"="Opaque" // 标识为不透明物体,用于后处理筛选
}
LOD 100 // 细节层级,当设备性能不足时选择更简化的SubShader
// 渲染通道(包含实际渲染逻辑)
Pass
{
// 开始CG编程(HLSL语法)
CGPROGRAM
// 声明顶点着色器函数名为 vert
#pragma vertex vert
// 声明片元着色器函数名为 frag
#pragma fragment frag
////// 顶点着色器输入输出定义 //////
// 输入参数:顶点位置(POSITION语义)
// 输出参数:裁剪空间坐标(SV_POSITION语义)
float4 vert(float4 v : POSITION) : SV_POSITION
{
// 模型空间 → 裁剪空间坐标转换(核心变换)
return UnityObjectToClipPos(v);
}
////// 片元着色器输出定义 //////
// 输出参数:目标颜色(SV_TARGET语义)
fixed4 frag() : SV_TARGET
{
// 返回纯白色(RGBA通道均为1)
return fixed4(1,1,1,1);
}
ENDCG // 结束CG代码块
}
}
}
三维变二维。
仿射变换通过线性与平移操作的结合,成为几何变换的通用工具
图像变换。
平移操作,保持几何不变性。
齐次空间 最后一个w
统一性
其次空间,无限远的点最终会相交。
用于物体旋转与反射。