unity 射线 碰撞 连线烘焙

点击选中物体

方法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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值