欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

unity 射线 碰撞 连线烘焙

程序员文章站 2022-06-10 23:48:28
...

点击选中物体

方法1:OnMouseDown()只针对脚本挂载的物体有效

首先,要给 物体加上 碰撞器Collider

然后在物体脚本上加入

void OnMouseDown()//只针对脚本挂载的物体有效
{
    Debug.Log("检查");
}

方法2:检测从屏幕发出的射线与物体发生碰撞,而这个发生碰撞的物体就是你选中的物体。

首先,要给 物体加上 碰撞器Collider

然后在物体脚本上加入

void MobilePick()
{
if (Input.touchCount != 1 )
return;

if (Input.GetTouch(0).phase == TouchPhase.Began)  
{  
    RaycastHit hit;  
    Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);  

    if (Physics.Raycast(ray, out hit))  
    {  
        Debug.Log(hit.transform.name);  
        //Debug.Log(hit.transform.tag);  
    }  
}  

}

void MousePick()
{
if(Input.GetMouseButtonUp(0)) //首先判断是否点击了鼠标左键
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //定义一条射线,这条射线从摄像机屏幕射向鼠标所在位置
RaycastHit hit; //声明一个碰撞的点(暂且理解为碰撞的交点)

    if (Physics.Raycast(ray, out hit))  //如果真的发生了碰撞,ray这条射线在hit点与别的物体碰撞了
    {  
        Debug.Log(hit.transform.name);  
        //Debug.Log(hit.transform.tag);  
    }  
}  

}

如果无法选中物体时,要检查是否物体加了碰撞器。

方法如下:

GameObject gameObject = (GameObject)Instantiate(…);

gameObject.name = “game_object”;
gameObject.AddComponent();
/*****************************************************************************************/
时间:
Console.WriteLine(“显示当前时间:{0}”, DateTime.Now.ToLocalTime());//当地时间

//
动画先在物体上创建 Animation组件 在去建动画
/
/

/************************************/
Unity3D 数字逐渐增加,一个数字动态变化到另一个数字(使用协程) CPU分时
int max; //最终值

int min; //初始值
int result = 0;
public int change_speed = 5; //速度 越大变化速率越慢

// Use this for initialization
void Start ()
{
StartCoroutine(Change()); //放到开始协程的地方
}
IEnumerator Change()
{
int delta = (max - min) / change_speed; //delta为一个常数,每次加的数大小

    result = min;

    for(int i = 0;i<change_speed;i++)
    {
        result += delta;
        this.GetComponent<Text>().text = result.ToString();
        yield return new WaitForSeconds(0.1f);     //每 0.1s 加一次
    }
    this.GetComponent<Text>().text = max.ToString();
    StopCoroutine(Change());
}

/*********************************/

/**************************/
找子物体
GameObjext.transform.GetChild(1).GetChild(2).GetChild(0).gameObjct.SetActive(false);

跳转场景 SceneManager.LoadScene(“main”)跳转场景

public static 类名 instance;
public static 类名 GetInstance()
{
if(instance==null)
{
instance=new 类名();
}
return instance;
}
/*****************************/
#region 说明片段
#endregion
/****************************/
延时函数运行时间
InvokeRepeating(“函数名”,几秒后开始运行,运行间隔时间);
CancelInvoke(“函数名”);//结束InvokeRepeating

2.协程:
在需要的地方 StartCorotine(“函数名”);
停止的地方 StopCorotine(“函数名”);
IEnumerator 函数名()
{
yield return new WaitForSeconds(0.5f);
}
/******************************/

//
发光闪烁插件 Highlighting System v4.0
1.在摄像头上添加渲染组件 Highlighting Renderer(Script)
2.在需要发光的物体上添加 Highlighter(Svript)
3.在脚本里调用有发光组件的物体(其前提是using HighlightingSystem),类型为Highlighter
/
**/

//
样条线插件 SuperSplines+Pro
1.在需要有样条线的物体上创建子物体(New Spline),可以调整样条线的位置和方向
2.子物体上加载脚本Spline 和 Spline Mesh,Mesh Renderer。Mesh Renderer下的Base Renderer是样条线的样式。把Spline给到Mesh Renderer中
3.让线从起点到终点有一个动态的效果,Spline Mesh下的Updata Mode类型换成Ecery Frame,
Segmentatiob Optio下的Split mode类型换成By Spline Parameter
/
/

Application.Quit();关闭

/*/
鼠标滑过进入划出 使用组件接口 Event Trigger 添加下面的事件//SlipEvent
public void OnEnter()
{
transform.DOScale(new Vector3(1.05f,1.05f,1.05f),0.2f);
}
public void OnDown()
{
transform.DOScale(new Vector3(1,1,1),0.2f);
}
public void OnUp()
{
transform.DOScale(new Vector3(1.05f,1.05f,1.05f),0.2f);
}
public void OnExit()
{
transform.DOScale(new Vector3(1,1,1),0.2f);
}
/
/

/*************************/
窗口最小化
[DllImport(“user32.dll”)]
public static extern bool CloseWindow(IntPtr hwnd,int n);
[DllImport(“user32.dll”)]
static extern IntPtr GetForegroundWindow();
const int sw_showminimized=2; //不可改变的变量

public void Minimized()
{
CloseWindow(GetForgroundWindow(),sw_showminimized);
}
/***************************/

/******************************/
代码控制添加/删除组件
boxCollider a=OBJ.AddComponent();
Destoy(OBj.GetComponent());

销毁一个物体
GameObject.Destroy(gameObject);
生成一个物体在哪一个位置
Gameobject b=Instantiate(预制体obj,new Vector3(1f,1f,1f),Quaternion.identity);//Quaternion.identity 四元素值为0 xyzw
生成的b物体位于哪个的子物体
b.transform.parent=gameobject.transform;

记录一个物体的位置
Vector3 a=gameobject.transform.posotion;

bool[]arr=new bool[10];
/******************************/

/******************************/
灯光烘焙
point light 添加光源
光源中Light有一个mode:
Baked:烘焙好后不会在变化的光,耗费性能最低;
Mixed:烘焙好后根据场景变化适当调整,耗费性能中;
Realtime:实时监控场景变化,渲染光照,耗费性能最高
Unity顶部菜单栏上选择“Window”-“Light”-“Settings”
点击取消“Auto Generate”,点击“Generate Lighting”
烘焙后会多一些文件 LightBakeTest