Unity3d C# 脚本学习小结(二) 【常用方法】

时间:2021-06-10 05:22:11

1、Start() 开始方法;

2、Update() 正常更新逻辑,每渲染一帧都会调用

3、FixedUpdate()  不受帧率的变化,固定的时间间隔被调用,怎么设置间隔?Edit->Project Setting->time下面的Fixed timestep

4、LateUpdate()   会在每一帧中被调用。在所有Update函数被调用之后才执行。有利于程序的有序执行。(例如:跟随摄像机就应该在LateUpdate执行,因为它跟随的对象也许需要在Update中执行

5、OnGUI()  游戏界面绘制、更新

6、OnCollisionEnter(Conllision other) 在刚体与刚体开始接触时候调用此方法,(记住是刚体之间的碰撞)

7、OnCollisionStay(Conllision other)  在刚体与刚体碰撞的过程中,调用此方法 每帧都会调用此方法,知道碰撞结束;

8、OnCollisionExit( Conllision other) 在刚体与刚体停止接触时,调用此方法

9、OnTriggerEnter(Collider other)  当Collider(碰撞体)进入trigger(触发器)时调用,这个消息被发送到触发器碰撞体和刚体(或者碰撞体假设没有刚体)。注意如果碰撞体附加了一个刚体,也只发送触发器事件

10、判断两个物体之间的距离   Vector3.Distance( position1,position2) <distance   ;

          position1 和position2是需要判断的两个物体transform的position,distance是距离。

11、让一个物体朝向另一个物体

        transform.LookAt(other.transform);

12、创建一个对象,并让它有一个运动轨迹

   

 Transform  shoot = (Transform)Instantiate(shotPrefab,firePoint.gameObject.transform.position,
firePoint.gameObject.transform.rotation);
shoot.rigidbody.velocity= transform.TransformDirection(Vector3.forward*100f);

       firePoint 是一个Empty对象,它提供初始位置,shotPrefab是一个预制对象,shoot.rigidbody.velocity= transform.TransformDirection(Vector3.forward*100f);是让这个物体向前运动

13、旋转和移动

transform.Rotate(new Vector3(x,y,z))  ; transform.Translate(new Vector3(x,y,z));以某个轴为轴旋转或者移动就修改某个坐标的值,

14、当判断预制对象之间的判断的时候,名字会改变

void OnCollisionEnter(Collision collision) {  
if(collision.gameObject.name=="tankshot(Clone)")
{
Debug.Log(collision.transform.gameObject.name.ToString());
life--;

}
if(life==0)
{
Destroy(transform.gameObject);

}
}


其中 tankshot是一个预制对象,在动态创建的时候,后面会添加(Clone),所以名字编程tankshot(Clone);