transform.FindChild("子物体名字").GetComponent<组件的类型>().属性名 = 目标值; 或者 gameObject.GetComponentInChildren<组件的类型>().属性名 = 目标值;
解决思路就是将世界坐标转换成屏幕坐标,然后计算物体与鼠标之间移动量,循环鼠标被按下操作,得到鼠标的当前位置,加上计算好的移动量,将新的坐标赋值给物理就行了。主要是开启一个协同程序(corountine)来处理
主要代码如下:
// use this for initialization
void start ()
{
startcoroutine(onmousedown());
}
ienumerator onmousedown()
{
//将物体由世界坐标系转换为屏幕坐标系
vector3 screenspace = camera.main.worldtoscreenpoint(transform.position);//三维物体坐标转屏幕坐标
//完成两个步骤 1.由于鼠标的坐标系是2维,需要转换成3维的世界坐标系
// // 2.只有3维坐标情况下才能来计算鼠标位置与物理的距离,offset即是距离
//将鼠标屏幕坐标转为三维坐标,再算出物体位置与鼠标之间的距离
vector3 offset = transform.position - camera.main.screentoworldpoint(new vector3(input.mouseposition.x, input.mouseposition.y, screenspace.z));
while (input.getmousebutton(0))
{
//得到现在鼠标的2维坐标系位置
vector3 curscreenspace = new vector3(input.mouseposition.x, input.mouseposition.y, screenspace.z);
//将当前鼠标的2维位置转换成3维位置,再加上鼠标的移动量
vector3 curposition = camera.main.screentoworldpoint(curscreenspace) + offset;
//curposition就是物体应该的移动向量赋给transform的position属性
transform.position = curposition;
yield return new waitforfixedupdate(); //这个很重要,循环执行
}
}
Photoshop|
Dreamweaver|
SVG|
WebGL|
Visual Studio|
PowerDesigner|
Eclipse|
Git|
Apache Ant|
Atom|
Composer|
CodeSmith|
Flex|
Gradle|
Maven|
Sublime Text3|
SVN|
Tableau|
Vim|
Chrome开发者工具|
OpenGL|
Unity|
Direct3D|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....