Input输入方法
//按键按下触发一次
Input.GetKeyDown(KeyCode.Space);
//按键抬起触发一次
Input.GetKeyUp(KeyCode.Space);
//按键按下一直触发
Input.GetKey(KeyCode.Space);
//鼠标事件 0:左键 1:右键 2:中间滑轮键
//GetMouseButtonDown GetMouseButtonUp GetMouseButton 与按键触发一样
Input.GetMouseButtonDown(0);
//默认按钮事件 查看位置 Edit》projectSetting》input; inspector面板处
//按钮名称是系统默认的
//down up 和button出发次数和按键触发一样
Input.GetButtonDown("left ctrl");
//任何键按下 包括鼠标按键
if (Input.anyKeyDown)
{
print("anykeydown");
}
//获取鼠标在屏幕上的位置
print(Input.mousePosition);
随机数
//范围内随机生成一个整数
print(Random.Range(4, 10));
//范围内随机生成一个小数
print(Random.Range(4, 10f));
//设置随机数数列种子,这个种子决定随机数生成 每个种子生成的随机数数列是一样的
Random.InitState(0);
//如果想要随机数完全随机 可以把种子设置成时间戳
Random.InitState((int)System.DateTime.Now.Ticks);
//在一个园内生成随机数(二维)
print(Random.insideUnitCircle);
//在一个求体内生成随机数(三维)
print(Random.insideUnitCircle);
欧拉角和四元数
//欧拉角 直接表示每个坐标轴旋转的角度
print(cube.eulerAngles);
//四元数,运算之后的数值,不方便观察
print(cube.rotation);
//设置角度方法
//直接设置欧拉角
cube.eulerAngles = new Vector3(45, 45, 45);
//通过转换,把欧拉角转换为四元数
cube.rotation = Quaternion.Euler(new Vector3(45, 45, 45));
//四元数幻化为欧拉角的方法
print(cube.rotation.eulerAngles);
LookRotation小案例
public Transform Player;
public Transform enemy;
void Start()
{
}
void Update()
{
//LookRotation,看向目标角度
//得到方向向量
Vector3 dir = enemy.position - Player.position;
//不旋转y 所以把y设置为0
dir.y = 0;
//利用lookrotation获得目标四元数
Quaternion target = Quaternion.LookRotation(dir);
//通过插值方法,进行一个动画的旋转
Player.rotation = Quaternion.Slerp(Player.rotation, target, Time.deltaTime);
}
Rigidbody
public Rigidbody playerRgd;
void Start()
{
}
void Update()
{
//通过刚体来修改位置和旋转 比直接设置transform节省性能
//物体移动到某个位置,直接移动过去 瞬间移动过去
playerRgd.position = playerRgd.transform.position+Vector3.forward*Time.deltaTime;
//物体移动到某个位置 平滑的移动过去 有动画效果
playerRgd.MovePosition(playerRgd.transform.position + Vector3.forward * Time.deltaTime);
//物体旋转到某个角度
//playerRgd.MovePosition(Quaternion.Slerp(Player.rotation, target, Time.deltaTime));
//addForce rigidbody添加一个力
playerRgd.AddForce(Vector3.forward * 5);
}
Camera常用方法 绘制与鼠标位置的射线
private Camera mainCamera;
// Start is called before the first frame update
void Start()
{
//两种获取maincamera的方法
//mainCamera = GameObject.Find("MainCaamera").GetComponent<Camera>();
mainCamera = Camera.main;
}
// Update is called once per frame
void Update()
{
//获取摄像机到鼠标位置的射线
Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
//获取鼠标是否碰撞到物体
RaycastHit hit;
bool isCollider = Physics.Raycast(ray, out hit);
//如果碰撞到了,输出被碰撞的物体
if (isCollider)
{
//hit.collider为碰撞到的物体
Debug.Log(hit.collider);
}
//绘制出来射线
//Debug.DrawRay(ray.origin, ray.direction * 10, Color.yellow);
}
Application
//工程所在目录
print(Application.dataPath);
//流数据目录 数据存入什么格式就是什么格式,不会应为untiy打包而改编成加密格式
print(Application.streamingAssetsPath);
//
print(Application.persistentDataPath);
//临时目录
print(Application.temporaryCachePath);
//标识
print(Application.identifier);
//公司名
print(Application.companyName);
//项目名称
print(Application.productName);
//安装名
print(Application.installerName);
//编译模式
print(Application.installMode);
//是否编辑器模式
print(Application.isEditor);
//是否焦点
print(Application.isFocused);
//是否是移动平台
print(Application.isMobilePlatform);
//是否正在运行
print(Application.isPlaying);
//运行平台
print(Application.platform);
//unity版本
print(Application.unityVersion);
//游戏版本
print(Application.version);
//是否可以在后台运行
print(Application.runInBackground);
//退出游戏 打包后才可以执行
Application.Quit();
//打开网址
Application.OpenURL("www.baidu.com");
//游戏截图
//Application.CaptureScreenshot("游戏截图");
场景加载
//通过index加载场景
SceneManager.LoadScene(1);
//通过场景名称加载场景
SceneManager.LoadScene("02Scene");
//异步加载场景 会返回一个加载的进度
SceneManager.LoadSceneAsync(1);