【unity基础_Day13】 NavMeshComponent、Unity2D
一.NavMeshComponent1.NavMeshSurface组件(1)利用脚本在游戏中进行实时烘焙surface.BuildNavMesh();//创建导航网格 进行烘焙(2)当有多个NavMeshSurface组件进行烘焙时,通过list列表的方式进行获取;同时,他们的AgentTypeID并不是二进制的形式,除了默认的Humanoid的ID默认为0List<NavMeshSurf
一.NavMeshComponent
1.NavMeshSurface组件
(1)利用脚本在游戏中进行实时烘焙
surface.BuildNavMesh(); //创建导航网格 进行烘焙
(2)当有多个NavMeshSurface组件进行烘焙时,通过list列表的方式进行获取;同时,他们的AgentTypeID并不是二进制的形式,除了默认的Humanoid的ID默认为0
List<NavMeshSurface> surfaces = NavMeshSurface.activeSurfaces;
foreach (var item in surfaces)
{
item.BuildNavMesh();
print(item.agentTypeID);
}
(3)给NavMeshSurface的AgentType确定时,可以使用NavMesh的AgenTypeId来赋值
surface = gameObject.AddComponent<NavMeshSurface>();
//通过NavMesh中的索引 来获取AgentType
NavMeshBuildSettings build = NavMesh.GetSettingsByIndex(1);
//将AgentType赋予到MeshSurface上
surface.agentTypeID = build.agentTypeID;
2.NavMeshModifier组件
对一个特定的对象,进行特定的导航网格类型设定
3.NavMeshModifierVolume组件
对一块区域进行特定的导航网格类型设定,通过值来进行设定
4.NavMeshLink
实现的效果与Off Mesh LInk类似
5.实现动态烘焙
LocalNavMeshBuilder 可以挂在一个空物体上,会形成一个动态烘焙的包围盒,盒子之内的则可以形成动态烘焙
NavMeshSourceTag 在包围盒中的加上该脚本,即可以被认为需要动态烘焙的物体;同时也可以参与动态遮挡的效果,参与了其中的动态烘焙
【实现跟随游戏对象实时渲染】
二.AStar寻路
1.A*寻路的原理
寻找最优解
三.Unity2D
1.Sprite Render 精灵渲染
OrderInLayer 渲染顺序 数字越大越优先渲染
2.Rigidbody2D
if (Input.GetKeyDown(KeyCode.Space) && jump==true)
{
//跳跃
rig.velocity = Vector2.up * Time.deltaTime * speed;
ani.SetBool("IsJump", true);
//变为false 只能跳跃一次
jump = false;
}
if (Input.GetKeyUp(KeyCode.Space))
{
ani.SetBool("IsJump", false);
}
//检测碰撞进入
void OnCollisionEnter2D (Collision2D c)
{
if (c.gameObject.name == "Ground")
{
jump = true;
}
}
//当碰撞离开的时候
void OnTriggerExit2D(Collider2D c)
{
if (c.gameObject.name == "Obstacle")
{
//当游戏对象离开障碍物时的速度大于0,说明人物是向上走的,此时要关闭istrigger
//反之,速度小于0的时候,则是往下走的
if (rig.velocity.y > 0)
{
c.gameObject.GetComponent<EdgeCollider2D>().isTrigger = false;
}
else
{
c.gameObject.GetComponent<EdgeCollider2D>().isTrigger = true;
}
}
}
更多推荐
所有评论(0)