移动物体:选中物体按下V 定点吸附功能
移动物体:选中物体按下V 定点吸附功能
Ctrl
按下Crtl拖动物体会附着在1标准长度距离移动、缩放、旋转
1标准长度=步长,在下面的方法中可以修改
edit→setting
V
顶点吸附模式
untiy 学习
Ctrl+D
666
POint light 点光源
在物体属性的Box Collider 中将Is Trigger勾选上,那么碰撞器就变成了触发器
取消Nesh Render移除后 就成为透明的 成为一个透明的触发器
在触发区的触发函数
OnTriggerEnter(Collider other)
print("OnTriggerEnter:"+other.name);
//other.name 触发器的名字
OnTriggerExit()
OnTriggerStay()
C#语言
dfd
添加脚本
OnCollisionEnter()检测碰撞的函数
Exit() 碰撞分离
Stay() 碰撞中一直调用
动画系统
animation窗口制作动画
只能在该物体编辑
Ray ray=Camera。main。ScreenPointToRay(Input.mousePosition)
//以屏幕中鼠标点击的坐标放射射线
agent.SetDestination(hit.point);
//在nav中获取hit。point
anim.SetFloat("speed",agent.velocity.magnitude);
//获取速度agent.velocity.大小
角色行为动画
动画状态机
Animation 中创建AnimationController
拖入人物的Controller中
Window ->animator
将所有动画拖入Base Layer 中
静止切换到走/跑步:
speed >0(一般设为0.1) 即可进行切换
speed<0.1 走路到静止
取消Has Exit Time,让动画切换随时发生
speed>2 走路切换到跑步
此时需要代码来实现切换
控制主角行为:
鼠标点击位置与地面发生碰撞,为此需要进行射线检测
代码
void Update(){
if (Input.GetMouseButtonDown(0)){
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition); //检测屏幕中的坐标,通过括号中的参数获取射线
RaycastHit hit; //保存碰撞(点击)信息
if(Physics.Raycast(ray, out hit) ){
print(hit.point);
agent.SetDestination(hit.point);//获得鼠标点击的目标地点
} //进行碰撞检测
}
}
在获得点击信息前需要获得Naviation Agent组建,为此
using UnityEngine.AI;
public class Hero : MonoBehaviour{
public NavMeshAgent agent;
导航系统
导航网格烘培 勾选所有hierarchy中的Static
window->Navigation
agent radius 扩大可行范围
穿过草等隐蔽物体,在该物体的inspector中取消static ->navigation static->重新烘培(bake)
不需要生成导航网格的部分(如石头)
把Object中的Navigation Area 设定为 Not walkable->重新烘培
Nav Mash Agent
obstacle Avoidance需要和人物的大小保持一致
动画系统简介:
添加闪烁的效果
window Animation:创建文件夹
Add property中在每个节点修改相应的参数值,达到改变动画的效果
粒子运动:
在动画中添加position,在每一帧中改变粒子位置
粒子系统简介:
物体名称上右键,选择effect->partical system 添加粒子效果->inspector 中修改shape,color等参数值
可以导入粒子材质来制作想要的效果
emission发射粒子数量
size over lifetime 可以改变粒子从大到小的变化
用aaply 可以同时应用到多个需要使用粒子效果的物体上
创建新的场景时会创建直射光(平行光,相当于太阳光)
可以实现一天之内阳光的变化
其它光源:
point light 相当于电灯
属性 Type/ range/ color /intensity光照强度
spot light 手电筒
area light 区域光,制作角落里的火光时使用
mash render 显示物体的贴图
触发检测:
是否触发了机关
放在碰撞物体和触发器中的任意一个均可
private void OnTriggerEnter(Collider other){
print("OnTriggerEnter:" + other);
print("OnTriggerEnter:" + other.name);
print("OnTriggerEnter:" + other.tag);
}//进入时触发 同时获取信息
private void OnTriggerExit(Collider other){}
//离开触发器时触发
private void OnTriggerStay(Collider other){}//在机关内部时触发
获取碰撞信息:
private void OnCllisionEnter(Collision collision){
print (collison.collider);
print (collison.collider.name);
print (collison.collider.tag);
} //知道碰撞接触的物体信息
Is kinematic 禁用刚体功能
碰撞检测
武器和炮弹与敌人碰撞时触发掉血机制时需要检测碰撞完成
创建C# Scripts,可以把代码拖入到需要的物体中
private void OnCollisionEnter(Collision collision){
print("OnCollisionEnter");
}
一次碰撞调用一次
方法二:
private void OnCollisionExit(Collision collision){
print("OnCollisionExit");
}
private void OnCollisionStay(Collision collision){
print("OnCollisiobStay");
}//碰撞发生时,每一帧都会调用