Unity 3D 射线

射线:3D世界中一个点向一个方向发射的一天无终点的线,在发射轨迹中鱼其他物体发生碰撞时,他将停止发射。注意:这条线是逻辑上的,界面上看不到。

用途:射线应用范围比较广,多用于碰撞检测(如:子弹飞行是否击中目标)、角色的移动等。

射线从摄像机发射的

Ray ray=Camera.main.ScreenPointRay(Input.mousePosition);

RaycastHit hit;

if(Physics.Raycst(ray,out hit))

{

//hit.collder.gameObject可以获得命中的游戏对象

}

Pphysics.RaycastAll 投射一条光线并返回所有碰撞

屏幕坐标系 ScreenPoint

屏幕坐标系是以左下角(0,0),右上角为(Screen.Width,Screen.Height),向上向右正方向,鼠标的位置Input.MousePosition是屏幕坐标系

GUI则是常规的一左上角为(0,0),向下向右为正方向

Screen.Width,Screen.Height是游戏屏幕大小,不是电脑屏幕大小,Screen.fullScreen读写游戏啊是否全屏(模拟器中不起作用);ScreenshowCursor读写是否显示鼠标光标状态。

销毁游戏对象,假设离开相机视线

goBullet.AddCompontent("DestryObj");

给goBullet添加名为DestryObj的脚本

DestryObj.cs 内容

void OnBecameInvisible()

{

Destroy(this.gameObject);

}

自定义游戏光标

Start中隐藏光标 Screen.showCursor=false;声明属相public Texture CursorTexture;找一个png格式鼠标图片放到Project中,然后拖到CursorTexture属性上;

OnGUI 中:

Vector3 mousePos=Input.mouserposition;

GUI.DrawTexture(new Rect(mousePos.x,Screen.height-mouserPos.y,CursorTexture.width,CursorTexture.heght),Cursortexture);

(注意:以上代码仅为部分代码提示)

你可能感兴趣的:(Unity 3D 射线)