Unity3d中物体发射率怎么向前方发射一条射线

Unity3D鼠标拖拽物体贴地面移动代码
我的图书馆
Unity3D鼠标拖拽物体贴地面移动代码
& & 网上的很多Unity3D鼠标拖拽范例都是2D移动的,我来贴个在3D空间中拖动物体沿地面移动的代码吧,希望大家能用上~如果完全不懂脚本这块,可以看我下边的Tips,有详细的使用步骤。
因为只学了一个月的C#,编程水平很低,各位大神见笑了……
using UnityE
using System.C
public class mouseDrag : MonoBehaviour
//声明从鼠标发出一条射线clickRay
Ray clickR
//声明clickRay与游戏物体的碰撞
RaycastHit clickP
//声明clickRay与地面的碰撞
RaycastHit posP
//设置地面层,我的地面层是第8层,所以是8。不会设置层的话请看下边的Tips。
LayerMask mask=1&&8;
void Start () {
void Update(){
clickRay=Camera.main.ScreenPointToRay(Input.mousePosition);
void OnMouseDown()
//如果射线与物体相碰,则调用OnMouseDrag()
if(Physics.Raycast (clickRay,out
clickPoint))
OnMouseDrag();
void OnMouseDrag()
//取射线与地面相碰的坐标,赋给mouseMove,再把mouseMove的x坐标和z坐标赋给物体,y坐标不变(因为是贴在地面上移动)
Physics.Raycast (clickRay ,out
posPoint,Mathf.Infinity,mask.value);
mouseMove=posPoint.
transform.position = (new Vector3
(mouseMove.x, transform.position.y, mouseMove.z));
1、首先要拖拽的物体必须加上了Collider组建。然后在物体的Inspector视窗中点击Add
Component-(最下边)New Script,Name填mouseDrag,Language选CSharp,点击Creat
and Add。创建完双击Mouse
Drag组建中的Script文件,打开以后把上边代码全部替换过去,保存。
2、如何设置地面层:
选中地面,在Inspector视窗最上边有Tag和Layer下拉菜单,点击Layer,选择一个层,然后点Add
Layer确认你的层编号。如果是第10层,则把代码中的LayerMask
mask=1&&8;改成LayerMask mask=1&&10;
3、假如想要拖动的是角色,并且改变角色朝向和切换行走动画,就把void
OnMouseDrag()这行和后边大括号里的东西全部替换为
void OnMouseDrag()
//取射线与地面相碰的坐标,赋给mouseMove,再把mouseMove的x坐标和z坐标赋给物体,y坐标不变(因为是贴在地面上移动)
Physics.Raycast (clickRay ,out
posPoint,Mathf.Infinity,mask.value);
mouseMove=posPoint.
//令角色朝向行走方向
transform.LookAt(new Vector3
(mouseMove.x, transform.position.y, mouseMove.z));
transform.position = (new Vector3
(mouseMove.x, transform.position.y, mouseMove.z));
//播放行走动画,引号里改成你自己的动画名称
animation.CrossFade("walk");
void OnMouseUp()
//鼠标松开时回到待机悬停动画,引号里改成你自己的动画名称
animation.CrossFade
请注意一下要把动画名称改成自己的,而且更改后大括号不要少写了。
TA的最新馆藏
喜欢该文的人也喜欢Unity3d中,如何实现物体和多个物体碰撞时得到各碰撞物体的信息? - 知乎47被浏览7901分享邀请回答12 条评论分享收藏感谢收起32 条评论分享收藏感谢收起查看更多回答}

我要回帖

更多关于 常见物体的红外发射率 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信