1.碰撞事件
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.collider.tag == "collect") {
Debug.Log("++!");
Destroy(collision.gameObject);
GameUI.collectNum++;
}
}
1.触发器事件
private void OnTriggerEnter2D(Collider2D collision)
{
}
2.射线方法
重写射线的方法
调用时
RaycastHit2D hitRight = Raycast(new Vector2(0.8f, 0), Vector3.right, 0.5f, ground);
//参数:(位置,方向,长度,图层)
PS:注意不要从物体·的位置直接发射射线,不然射线会一直碰到物体本身
RaycastHit2D Raycast(Vector2 offset, Vector2 rayDiraction, float length, LayerMask layer)
{
//获取物体的位置
Vector2 pos = transform.position;
//创造射线
RaycastHit2D hit = Physics2D.Raycast(pos + offset, rayDiraction, length, layer);
//颜色改变,碰到就是红,不碰就是绿w
Color color = hit ? Color.red : Color.green;
//用debug来绘制可视化的射线
Debug.DrawRay(pos + offset, rayDiraction * length, color);
return hit;
}
3.简单射线
4.冻结XYZ轴/解冻
冻结:
rigi.constraints=RigidbodyConstraints2D.FreezePositionX
rigi.constraints=RigidbodyConstraints2D.FreezePositionY
rigi.constraints=RigidbodyConstraints2D.FreezePositionZ
解冻:rigi.constraints = RigidbodyConstraints2D.None;
只能一次性全部解冻
5.销毁物体
Destroy(player);
6.调用其他类的方法
GameObject.FindObjectOfType().Over();
7.生成预载体
8.预载体文件夹PreFab
成为子集
transform.SetParent(coll.transform);
void OnTriggerEnter2D(Collider2D coll) {
if (coll.tag =="rotato") {
rigi.velocity = Vector2.zero;
transform.SetParent(coll.transform);//如果碰到就设为他的子集
Debug.Log("碰到了");
}
if (coll.tag == "pin") {
GameObject.FindObjectOfType<GameOver>().over();
}
}
}
9.停用脚本
要事先吧脚本定义好
public fas fas;
public rotation rotation;
脚本名.enabled=false;
fas.enabled = false;
rotation.enabled = false;
10.修改物体刚体的重力大小
Ared.gameObject.GetComponent().gravityScale = 0;
11.脚本设置点击按钮事件
直接继承 IPointerDownHandler, IPointerUpHandler, IPointerExitHandler三个类
public class OnButtonPressed : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler
{
12.调用其他类的方法
int load = GameObject.FindObjectOfType<Save>().ReadLoad1();
13.主摄像机大小
Camera.main.DOOrthoSize(2f, 0.6f);
消除卡墙bug
在物体外围添加射线 碰到射线就停止运动
14.[SerializeField] 注解
让变量显示在面板上
[SerializeField] private int i;
15 . 移动到指定位置
MoveToWards()
transform.position = Vector2.MoveTowards(transform.position,target.transform.position,moveSpeed*Time.deltaTime);
16.获取鼠标点击的位置
将鼠标点击的位置转换为屏幕坐标和世界坐标
public Vector3 screenPosition;//将物体从世界坐标转换为屏幕坐标
public Vector3 mousePositionOnScreen;//获取到点击屏幕的屏幕坐标
public Vector3 mousePositionInWorld;//将点击屏幕的屏幕坐标转换为世界坐标
void MouseFollow()
{
//获取鼠标在相机中(世界中)的位置,转换为屏幕坐标;
screenPosition = Camera.main.WorldToScreenPoint(transform.position);
//获取鼠标在场景中坐标
mousePositionOnScreen = Input.mousePosition;
//让场景中的Z=鼠标坐标的Z
mousePositionOnScreen.z = screenPosition.z;
//将相机中的坐标转化为世界坐标
mousePositionInWorld = Camera.main.ScreenToWorldPoint(mousePositionOnScreen);
//物体跟随鼠标移动
//transform.position = mousePositionInWorld;
//物体跟随鼠标X轴移动
// transform.position = new Vector3(mousePositionInWorld.x, transform.position.y, transform.position.z);
}
17.获取物体面板的旋转值
public Vector3 GetInspectorRotationValueMethod(Transform transform)
{
// 获取原生值
System.Type transformType = transform.GetType();
PropertyInfo m_propertyInfo_rotationOrder = transformType.GetProperty("rotationOrder", BindingFlags.Instance | BindingFlags.NonPublic);
object m_OldRotationOrder = m_propertyInfo_rotationOrder.GetValue(transform, null);
MethodInfo m_methodInfo_GetLocalEulerAngles = transformType.GetMethod("GetLocalEulerAngles", BindingFlags.Instance | BindingFlags.NonPublic);
object value = m_methodInfo_GetLocalEulerAngles.Invoke(transform, new object[] { m_OldRotationOrder });
//Debug.Log("反射调用GetLocalEulerAngles方法获得的值:" + value.ToString());
string temp = value.ToString();
//将字符串第一个和最后一个去掉
temp = temp.Remove(0, 1);
temp = temp.Remove(temp.Length - 1, 1);
//用‘,’号分割
string[] tempVector3;
tempVector3 = temp.Split(',');
//将分割好的数据传给Vector3
Vector3 vector3 = new Vector3(float.Parse(tempVector3[0]), float.Parse(tempVector3[1]), float.Parse(tempVector3[2]));
return vector3;
}
18.控制时间
Time.timeScale = 0.3f;
19.停止协成
public Coroutine coroutine;
coroutine=StartCoroutine(LeftAndRight());
20.将一个脚本变为按钮直接继承类
IPointerDownHandler, IPointerUpHandler, IPointerExitHandler
这是整套的也可以单独继承需要的方法
public class MenuScene : MonoBehaviour, IPointerDownHandler
{
他就会自动报方法的
}