下午做了一点小东西,将摄像机变成cube的子物体,然后cube用来和模型碰撞,有边界碰撞检测
首先参考了
http://www.cnblogs.com/javawebsoa/archive/2013/05/18/3085818.html
这篇文章
给cube加上了刚体以及box collider,rigidbody没开重力
然后模型加上了mesh collider
遇到的问题如下:
1、开了iskinematic之后就不碰撞,所以这个要先关掉
碰撞之后可能会被弹飞(以为没开重力),这时候设置drag和angular drag为一个大数,增大摩擦力和角摩擦力,必要时可以在Constraint中限制xyz
3、很薄的物体,比如模型的边和plane,即使像上面那样设置,也会传过去,我是没啥好办法,边界的话加了六个加粗的cube以及各自的collider
下午做了一点小东西,将摄像机变成cube的子物体,然后cube用来和模型碰撞,有边界碰撞检测首先参考了http://www.cnblogs.com/javawebsoa/archive/2013/05/18/3085818.html这篇文章给cube加上了刚体以及box collider,rigidbody没开重力然后模型加上了mesh collider遇到的问题如下:1、开了
这个问题,
摄像机
拍摄主角,当主角被墙遮蔽了视野,那么就用正上方的点和当前相机所在位置的店为起始点和终点,从二者之间再找出三个关键点进行射线检测,能看到主角的店即可作为
摄像机
的transform.position Vector3[] posArray;
Vector3 beginPos = player.transform.position + offset;
Vector3 endPo
从相机射出一条射线(视线)指向聚焦的
物体
如果视线上出现
碰撞
体,则修改其材质的透明度,并缓存
如果移出
碰撞
的视线后,则将之前的缓存的
碰撞
体的材质的透明度设置回原来的,并置空
2.2 核心代码
下面有两种解决方案 但是都存在一些小小的缺陷
两种都是用到射线的知识 其
中
一种是检测到
中
间存在
物体
改变
摄像机
和主角之间的距离达到效果
另一种是检测到之后改变3D
物体
的透明度 来实现效果
1.简单的场景搭建
我为了实现效果 ...
capturingScreenshot = false;
RenderTexture rt = new RenderTexture(captureWidth, captureHeight, 24);
GetComponent<Camera>().targetTexture = rt;
Texture2D screenShot = new Texture2D(captureWidth, captureHeight, TextureFormat.RGB24, false);
GetComponent<Camera>().Render();
RenderTexture.active = rt;
screenShot.ReadPixels(new Rect(0, 0, captureWidth, captureHeight), 0, 0);
GetComponent<Camera>().targetTexture = null;
RenderTexture.active = null; // JC: added to avoid errors
Destroy(rt);
byte[] bytes = screenShot.EncodeToPNG();
string filename = Application.dataPath + "/../screenshot.png";
System.IO.File.WriteAllBytes(filename, bytes);
Debug.Log(string.Format("Took screenshot to: {0}", filename));
这段代码会在按下空格键时,将当前
摄像机
的渲染结果保存为一张 PNG 格式的图片,并保存在应用程序的根目录下。您可以根据需要修改图片的分辨率和保存路径。