Updated on 十月 11, 2021
Unity C#初级编程 学习笔记
https://learn.u3d.cn/tutorial/beginner-gameplay-scripting
矢量数学
向量的点积和叉积的几何意义
点积:一个向量在另一个向量的投影长度乘以另一个向量的长度。当向量夹角小于90度时,为正;90度时为0;大于90度时,为负。
叉积:垂直于两个向量的向量,向量长度是两个向量为边的平行四边形的面积。
https://www.bilibili.com/video/BV1BT4y157Sa
视频直观地感受一下。
在Unity中,向量点积可以使用Vector3.Dot(Vector3,Vector3):float来计算;叉积可以使用Vector3.Cross(Vector3,Vector3):Vector3来计算。
Active Object激活对象
gameObject.SetActive(true);
停用对象后,对象消失,在Hierarchy中呈灰色。
如果停用对象的父对象,则父对象、子对象都消失。此时myObject.activeSelf返回True,myObject.activeInHierarchy返回False。
enable和active的区别
active是针对对象的,enable是针对组件的(例如对象身上的光组件)。
active、enable和destroy的区别
个人理解active、enable设为false后,该对象、组件还能被重新设为true并显示;Destroy(xxx)后,则被销毁了。
Destroy(gameObject, 1.5f)意为在1.5秒后销毁对象。
Instantiate
Instantiate用于创建Prefab的克隆体。可以设置放置位置、角度。如果想要对其施加力,可以如下方法:
Rigidbody rocketInstance; rocketInstance = Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation) as Rigidbody; rocketInstance.AddForce(barrelEnd.forward * 5000);
Invoke、InvokeRepeating
Invoke作用是多少秒后调用某个方法,InvokeRepeating作用是在Invoke基础上,间隔多少秒调一次。
调用方法如下:
Invoke ("SpawnObject", 2); InvokeRepeating("SpawnObject", 2, 1); // 2秒后调用,并每隔1秒重复调用 void SpawnObject() { float x = Random.Range(-2.0f, 2.0f); float z = Random.Range(-2.0f, 2.0f); Instantiate(target, new Vector3(x, 2, z), Quaternion.identity); }