Collider 碰撞器
内置碰撞器不能使用时可以用别的碰撞器解决(如box collider)
mash collider 网格顶点多,碰撞效果更好,但耗费性能更多
captral /box /terrian / sphere collider
Collider 碰撞器
内置碰撞器不能使用时可以用别的碰撞器解决(如box collider)
mash collider 网格顶点多,碰撞效果更好,但耗费性能更多
captral /box /terrian / sphere collider
刚体:
rigidbody(拥有物理性质,重力加速度等)
(选择相机->GameObject: 选择Align with view,让当前视野与相机保持一致)
mass质量
Drag 阻力(控制如下落速度)
Angular Drag 旋转阻力(控制旋转的速度)
freeze position/freeze rotation 冻结某一方向的移动/旋转
人物大小确定:通过基本模型的高度进行对比调整
Ctrl +Z 撤销操作
按住shift进行绘制可以把地形降低
paint height:
只能抬高地形,但Height可以控制自定义的地形高度
Smooth height :
把地形变得更平滑
paint texture
添加贴图,法线创造更多纹理细节(remove移除)
Place tree
摆放树
size 大小,density密度
按住shift 进行粉刷可以减少树
paint details
添加细节贴图
size 大小
opacity 减小细节密度
target strength
由美工设计
地形建立
Terrain
属性:width,length,height控制地形升高的最大高度
Brushes 笔刷形状,可以形成不同形状的地形
opacity 升高地形的快慢
取消window->Auto generate 避免绘制地形时不断对光影进行处理
地形创建:
ctrl +N 创建全新的场景
prefab: 预置体制作(比如制作敌人时,可能需要修改敌人属性,预置体方便敌人很多时批量修改)
单独修改一个敌人的属性时可以直接点击该敌人修改
Position/ rotation/ scale 变成粗体时就不会受prefab 的控制
敌人名称变红时的情况:选择Game object破坏和prefab之间的关联
apply键:把一个敌人的属性应用到prefab的属性中
重新建立和prefab 之间的关联
破坏关联:edit 中点击 break prefab instance
控制物体移动:避免复制物体产生偏差的方法
按住ctrl建进行复制
Edit->Snap setting: 可以控制各方向移动的距离(步长)
按住V可以实现Persp顶点吸附功能
F2可以修改hierarchy中的项目名称
所有的物体之间都有父子关系
Transform 方位组件:
x,y,z三种方向
Position(位置)/ rotation(旋转)/ Scale(各方向放大缩小)
视野控制
F键 聚焦
Alt+ 鼠标左键(多方面观察)/ 滑轮
飞行模式: 按住鼠标右键,旋转(或QWER)
方便观察场景效果
默认是透视视野(近大远小)
正交视野(origion graphic)等比例放大场景中的物体
3D 模型的导入:
Basic:
cube/ ball / capsule / cylinder / plane / quad(minimized plane)/ terrain / tree/ wind zone(风区,物体沿风向运动)/ 3D text (3D 文字)
建模师造模型(3D max),程序员写程序
模型:外观,材质
下载后的素材导入:
下载后点击import
搜索:
asset 本地 /asset store
搜不到的时候 点击edit preference-> General -> 勾选Show Asset store search hits
pubblic Transform hero;
private Vector3 offset;
void Start(){offset=tranform.position-hero.position;
}
void Update(){
transform.position=offset+hero.position;
}
这样可以获取目标的位置
判断鼠标左键按下:
if (Input.GetMouseButtonDown(0))
{ }
烘焙,光照贴图,节省性能,
勾选上IsTrigger之后它就是触发器了,不再是碰撞器,物体就可以将它穿过。
调用触发的函数为:
private void OnTriggerEnter(Collider other){
}
private void OnTriggerEnter(Collider other){}
private void OnTriggerStay(Collider other){}
如何获得碰撞物体的信息:
private void OnCollisionEnter(Collision collision)
{
print(collision.collider);
print(collision.collider.name);
print(collision.collidr.tag);
}
碰撞需要的条件:两个物体都要有collider,至少有一个物体有刚体。
绘制地形时的一个设置可以使性能更优
prefab关联
如何导入Unity自带的资源
需要打开安装程序去安装另一个程序包,这样再import package的时候就不止有custom package 选项了
碰撞检测
private void OnCollisionEnter(Collision collision){
print("OnCollision")}