1、测试移动和攻击塔功能是否正常
2、攻击方法实现:
GameManager.Instance.DecreasePlayerHP(damage);
1、测试移动和攻击塔功能是否正常
2、攻击方法实现:
GameManager.Instance.DecreasePlayerHP(damage);
1、移动状态和攻击状态切换
距离判断:Vector3.Distance(transform.position, target.transition.position)
停止移动导航:meshNav.enabled = false
状态切换:Animator.SetBool("Attacking",true)
2、Target 切换
如果角色是敌人,则默认目标是玩家的塔
如果角色是玩家,则默认目标是敌人的塔
1、把角色的自动寻路组件设置为默认不开启。当角色生成并设置到正确的位置后再启用
在OnEnable方法中调用Invoke(NavMesh.Enabled,0.001f)
1、给Ground添加AI-navimesh组件,选择Agent height, 点击bake
2、调整角色高度,确保能应用到导航
1、给角色添加组件Ragdoll,把角色对应的子部位物体复制给Ragdoll对应部位
1、增加方框选中的显示:在角色脚下增加一个圆圈,命名为selected object
1、给Animator中的动画状态添加动画切换的bool值参数
2、给角色添加Player Tag
3、给角色增加一个MinimapIcon的sphere,放到角色物体的子物体
1、给角色添加Capsule Collider、Nav Mesh Agent组件
2、添加动画控制器Animator, 然后将Animator赋值给角色的Animation组件。
把running动画和Attacking动画模型拖入到animator界面,增加running和Attacking的动画状态切换。
Grid Layout Group和Content Size Fitter搭配使用可以自适应宽高
方法调用:A需要持有B,才能调用B的方法。
委托,回调:A需要持有B,才能注册B的委托。
tolua
//对象池
Laya.Pool.getItemByCreateFun("PlayerBolt",)
onTriggerEnter(other){
}//触发检测执行
//创建物体的预制体
Laya.Sprite3D.instantiate(bolt_Player)
//激活(显示)物体
bolt_Player.active = false;
所需能力:
如何去提升这些能力,从哪方面去提升?
希望做哪些品类的游戏
编辑器下资源回收需要置空所有引用
在原生的opengl中,所谓深度测试指的是,当前绘制指令里待绘制的所有点,其投影在屏幕上的前后覆盖关系是否受点的z坐标影响。
举同一帧内两条绘制指令的例子。
glenable(gl_depth_test)
glbegin()
绘制三角形A
glend()
gldsiable(gl_depth_test)
glbegin()
绘制三角形B(B的z坐标比A更远)
glend()
绘制B前面有gldisable(gl_depth_test)
所以B的绘制其与A的关系不再受z坐标影响,所以视口窗口里B会在A前面,如果我没有gldisable(gl_depth_test)这一句,那么A就会在B前面。
这跟什么colorbuffer,什么颜色缓冲区的关系扯得太远了。这都是固定管线时代就已经有的内容了……
//Vector3 m_target = m_go2.transform.position;
//m_go1.transform.Translate((m_go2.transform.position - m_go1.transform.position).normalized * Time.deltaTime, Space.World);
//m_go1.transform.position = new Vector3(Mathf.Clamp(m_go1.transform.position.x, m_go1.transform.position.x, m_target.x), Mathf.Clamp(m_go1.transform.position.y, m_go1.transform.position.y, m_target.y), Mathf.Clamp(m_go1.transform.position.z, m_go1.transform.position.z, m_target.z));
private void Update()
{
//if (timer <= 1)
{
m_go1.transform.Translate(Vector3.right * 2 * Time.deltaTime);
Vector3 viewPos = Camera.main.WorldToViewportPoint(m_go1.transform.position);
if (viewPos.x >= 1f || viewPos.x < 0.0 || viewPos.y >= 1f || viewPos.y < 0.0)
{
m_go1.transform.position = oldPos;
return;
}
oldPos = m_go1.transform.position;
timer += Time.deltaTime;
}
}