脚本挂载在需要移动的对象上:
公共类立方体脚本: 单行为 {
用于记录鼠标单击点的坐标
载体3靶点;
// 将其用于初始化
无效开始 () {
是,对象在开始时不移动
目标点 = 转换位置;
}
无效更新 () {
使用光线执行此操作:单击鼠标左键,对象将简化为鼠标单击位置
如果 (输入.获取鼠标按钮下来(0))
{
创建从相机到鼠标单击位置的光线
光线 = 相机主屏幕点到雷(输入鼠标位置);
记录碰撞信息
雷施海特命中;
如果这条射线发生碰撞
如果 (物理.射线投射(射线,输出命中))
{
获取命中的碰撞信息以获取其坐标命中点。
这里的Y = 0.5f是因为物体是一个立方体,并且使它移动总是在平面上
目标点 = 新矢量 3(命中点 x, 0.5f, 命中点数);
}
}
对象被简化到鼠标单击的位置
变换位置 = Vector3.Lerp(变换位置,目标点,时间增量时间);
}
}
使用光线进行操作:输入对象并使对象消失,然后恢复 - >脚本安装在相机上
公共班级庇护所: 单一行为 {
记录移动对象
转换玩家;
记录隐藏的对象
游戏对象其他;
无效开始 () {
获取对象
玩家 = 游戏对象。查找与标签(“玩家”)转换;
}
无效更新 () {
获取光线的方向
矢量 3 目录 = 玩家位置 - 变换位置;
初始化射线
射线 = 新射线(变换位置,dir);
记录光线碰撞信息
雷施海特命中;
发射射线
强调 // 注意这里 Raycast 只会返回有关第一个要碰撞的对象的信息unity 物体发射射线unity 物体发射射线,所以让我们在下面判断
如果 (物理.雷投射(射线像素游戏素材,出击)) {
如果光线碰撞返回的对象不是 Player 标记,请隐藏该对象
如果 (命中转换标记 != “玩家”) {
如果存在隐藏对象氛围,并且下一次碰撞返回的信息对象与上一个对象不同,则会显示前一个对象
如果 (其他 hit.collider.name != other.name) {
其他 __________。SetActive(真);
}
隐藏当前光线碰撞的对象
命中.对撞机.游戏对象.SetActive(假);
记录当前隐藏的对象
其他 = 命中对撞机游戏对象;
}
}
}
}