mark

键盘鼠标输入获取:
Input.GetKey

移动摄像机到合适位置:选中摄像机—GameObject----Align with view(ctrl+shift+F)移动至当前位置。
所有组件都是类,挂载到游戏物体身上后,运行后,引擎会自动实例化对象,脚本类即为游戏物体的大脑。

图表 1
Private Transform m;
Void Start(){
m=gameObject.GetComponent();
}
获取相应组件的应用。查找当前游戏物体身上的某个组件,然后保存他的引用。

Transform.Trabslate(Vector3,Space)
移动物体的位置。游戏物体往某个方向移动;以自身坐标系或世界坐标系。

图表 2
void Update(){
m.Translate(Vector3.forward0.1f,Space.Self);
m.Translate(Vector3.forward
0.1f,Space.World);
}

图表 3.WASD实现物体移动

Rigidbody组件:
Mass:质量
Drag:空气阻力
Angular Drag:角阻力
Use Gravity:是否使用重力

使用刚体组件移动物体:

使用刚体组件移动物体脚本:(Rigidbody组件所带的MovePosition功能)
private Rigidbody m_Rigidbody;
private Transform m_Transform;
void Start(){
m_Rigidbody=gameObject.GetComponent();
m_Transform=gameObject.GetComponent();
}
void Update(){
if(Input.GetKey(KeyCode.W))
{
m_Rigidbody.MovePosition(m_Transform.position+Vector3.forward*n);
}

刚体常用方法介绍
AddForce:给刚体添加一个力,让刚体按世界坐标系方向运动
void upate(){
m_Rigidbody.AddForce(Vector3.forward,ForceMode.Force);
}
ForceMode:

AddForce:给刚体添加一个力,让刚体按自身坐标系方向运动

在Update()方法中执行物理操作,会出现卡顿的情况

监测碰撞(挂在该物体身上检测与谁碰撞)
OnCollisionEnter(Collision X):碰撞开始调用一次
X.gameObject.name :获取被碰撞物体的名字
OnCollisionExit(Collision X):碰撞结束时调用用一次
OnCollisionStay(Collision X):碰撞持续中

监测触发(检测进入了谁的触发范围内)
OnTriggerEnter(Collider X)
OnTriggerExit(Collider X)
OnTriggerStay(Collider X)

Mesh Filter(网格过滤器,设置模型样式)
Mesh Render
Cast shadows 投射阴影

Transorm.Rotate(Vector3,float)旋转模型
Vector3:沿某个轴向旋转
Float:旋转的度数

查找物体:GameObject,Find(string)通过名字查找游戏物体

脚本调用方法实例:触发器开门
private Transform m_Trnsform;需要控制物体的组件,先定义字段
void Start(){
m_Transform=gameObject.GetComponent();查找到组件并存储到声明的字段中
}

Public void OpenDoor()
{
m_Transform.Rotate(Vector3.up,90)
}
Public void CloseDoor()
{
m_Transform.Rotate(Vector3.up,-90)
}
若需要按键控制,可在void Update()中使用
if(Input.GetKeyDown(KeyCode.X))
{
}
if(Input.GetKeyUp(KeyCode.X))
{
}

触发器脚本中调用脚本:
private Door m_door;声明字段用于存储
类型为Door,自己定义。U3D中每一个脚本名称即为一个类型
Void start(){
m_door =GameObject.Find(“DoorParent”).GetComponent();
}找到名为”DoorParent”的物体并获得组件(脚本“Door”)
并通过m_Door来调用脚本并实现其内部效果

Void ontriggerenter(collider X)
{
if(X.nameObject.name==”student”){
m_Door.OpenDoor();
}
}
Void ontriggerExit(Collider X)
静态方法:直接通过类名进行调用

方法:
GameObject.FindGameObjectsWithTag(string)—静态方法,通过标签查找N个物体
GameObject.FindGameObjectWithTag(string)—静态方法,通过标签查找单个物体

GameObject:类,最大类,全局类,方法的集合

Unity Progressive Lightmapper功能学习:
单个实时光可以将indrect multiplier设置为0以避免该光源的间接光计算

UV Overlap:pack margin(官方调整到40%)
模型的裂纹问题(表面有明显接缝):模型inspector面板里Stitch Seams可以修复
接受光照不是很明显的材质(例如地毯、沙发等)调低Scale in Lightmap减少接收的光线数量

Mixed GI
Baked Indirect:只烘焙间接光照,直接光及阴影进行实时计算
ShadowMask:直接光产生的阴影也会被烘焙到shadow mask中

  • Subtractive:静态物体(直接光间接光都烘焙到光照贴图中);动态物体(接收直接光,可以在静态物体上投射主方向光的阴影)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值