美文网首页
瞬移(射线)

瞬移(射线)

作者: 归隐3中 | 来源:发表于2016-12-02 21:29 被阅读0次
问题.png
using UnityEngine;
using System.Collections;

public class cube1 : MonoBehaviour {
    Vector3 target;//cube 移动目标点
    void Start () {
        //将target的初始值设为cube的中心点
        target = transform.position;
    }

    // Update is called once per frame
    void Update () {
        CubeMotion ();//控制cube的移动
        CastRay ();
        //CubeMoveToMousePosition ();//cube移动到鼠标点击的位置
    }
    //控制cube的移动
    void CubeMotion(){
        //WASD
        float hor = Input.GetAxis ("Horizontal");
        float ver = Input.GetAxis ("Vertical");
        //
        transform.position += transform.forward * ver * 3 * Time.deltaTime;
        transform.Rotate (Vector3.up * hor * 45 * Time.deltaTime);
    } 
    void CastRay(){
        RaycastHit hit;
        //从cube的中心点发射一条射线,方向为cube的正前方,检测的距离为3.
        if (Physics.Raycast (transform.position,transform.forward, out hit,3)) {
            Debug.Log ("射线所碰撞的物体是:"+ hit.collider.name);
            //Debug.Log ("射线所碰撞的点是:"+ hit.point);
        }
    }
    //cube移动到鼠标点击的位置
    void CubeMoveToMousePosition(){
        if (Input.GetMouseButtonDown (0)) {
            //从相机的位置创建一条穿过屏幕上鼠标所在位置的射线
            Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);

            //发射射线
            RaycastHit hit;
            if (Physics.Raycast (ray, out hit)) {
                //忽略非地面游戏物体
                if (hit.collider.name == "Plane") {
                    //获取cube所要移动的目标点
                    Vector3 temp = hit.point;
                    temp.y += transform.position.y;
                    target = temp;
                }
            }
                                //移动cube到target
                        transform.position=Vector3.Lerp(transform.position,target,0.5f);
        }       
    }
}
工程界面.png

操作步骤:
先创建Plane和两个Cube,然后在需要移动的Cube上填写以上代码,最后在需要移动的Cube上添加Rigidbody即可实现上述问题。

相关文章

  • 瞬移(射线)

    操作步骤:先创建Plane和两个Cube,然后在需要移动的Cube上填写以上代码,最后在需要移动的Cube上添加R...

  • 01VR房地产中射线作用及代码了解

    一、房地产中关于射线的用处## 1.用来瞬移(曲线)。2.直线用来与物体进行交互。 二、直线射线的代码解析(与物体...

  • 29VRTK插件之瞬移功能的实现

    一、瞬移功能简介## 瞬移可以分为直线瞬移(SimplePointer)和曲线瞬移(BezierPointer)都...

  • VR开发实战之瞬移以及抓取扔放物体(基于VRTK插件)

    一、瞬移 瞬移可以分为直线瞬移(SimplePointer)和曲线瞬移(BezierPointer)之前我们有使用...

  • VR开发 -- 瞬移(VRTK)

    瞬移可以分为直线瞬移(SimplePointer)和曲线瞬移(BezierPointer)之前我们有使用过VR直线...

  • VR开发--SteamVR Plugins中实现移动功能(最新)

    瞬移的控制器 新版的VRTK工具已经不支持瞬移功能的直接添加,需要添加VRTK控制器来进行相关的瞬移功能 实现瞬移...

  • 瞬移

    我有一个梦想, 有天距离不再是远方, 我们都会瞬移, 如果你想念我, 我就在你身旁。

  • 瞬移

    早上很冷,降温了。冬至前后,夜很长,我穿上衣服,穿过冷飕飕的客厅去喊儿子起床。 喊一个初中生起床要分两次,第一次只...

  • 瞬移

    把生活过得清爽干净,是一种很高级的修行。 这种话一听就是豆瓣上那些只管拔高逼格,无视人间烟火的文艺青年说的。 文青...

  • 点线面关系

    射线与射线的交点计算

网友评论

      本文标题:瞬移(射线)

      本文链接:https://www.haomeiwen.com/subject/zgeqmttx.html