unity3d跟随鼠标移动_unity 3d跟随鼠标移动 - CSDN
  • unity3D物体跟着鼠标移动

    千次阅读 2019-09-19 09:40:08
    经多次尝试发现,鼠标转成世界坐标之后缺一Z轴,所以想出的解决方案是先将要跟随的物体的世界坐标转成屏幕坐标,再把该屏幕坐标的Z轴赋给鼠标的Z轴,这样一来,鼠标就具备了Z轴,再将鼠标坐标转为世界坐标,代码如下...

    原本以为只要将鼠标坐标转为世界坐标,然后将转换后的坐标赋给物体就能实现。经多次尝试发现,鼠标转成世界坐标之后缺一Z轴,所以想出的解决方案是先将要跟随的物体的世界坐标转成屏幕坐标,再把该屏幕坐标的Z轴赋给鼠标的Z轴,这样一来,鼠标就具备了Z轴,再将鼠标坐标转为世界坐标,代码如下:

     

     //获取需要移动物体的世界转屏幕坐标
            Vector3 screenPos = Camera.main.WorldToScreenPoint(this.transform.position);
            //获取鼠标位置
            Vector3 mousePos = Input.mousePosition;
            //因为鼠标只有X,Y轴,所以要赋予给鼠标Z轴
            mousePos.z = screenPos.z;
            //把鼠标的屏幕坐标转换成世界坐标
            Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);
            //控制物体移动
            transform.position = worldPos;

     

    展开全文
  • Unity之UI跟随鼠标移动

    千次阅读 2018-05-21 10:00:12
    // ========================================================// Describe: 获取UI子节点在Canvas的2D坐标// Author:RobinApp // Date:2018/05/21 09:03:21// Versions: v 1.0// ================================...
    //将该脚本挂载在需要移动的ui上即可
    using UnityEngine;
    using System.Collections;
    public class UI2DanchoredPosition : MonoBehaviour
    {
        Canvas canvas;
        RectTransform rectTransform;
        Vector2 pos;
        Camera _camera;
        bool state = false;
        RectTransform canvasRectTransform;
        void Start()
        {
            rectTransform = transform as RectTransform;
            canvas = GameObject.Find("Canvas").GetComponent<Canvas>();
            _camera = canvas.GetComponent<Camera>();
            canvasRectTransform = canvas.transform as RectTransform;
            Debug.Log(canvas.renderMode);
        }
        void Update()
        {


            FollowMouseMove();
        }
        public void FollowMouseMove()
        {
            //worldCamera:1.screenSpace-Camera 
            // canvas.GetComponent<Camera>() 1.ScreenSpace -Overlay 
            if (RenderMode.ScreenSpaceCamera == canvas.renderMode)
            {
                RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, Input.mousePosition, canvas.worldCamera, out pos);
            }
            else if (RenderMode.ScreenSpaceOverlay == canvas.renderMode)
            {
                RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, Input.mousePosition, _camera, out pos);


            }
            else
            {
                Debug.Log("请选择正确的相机模式!");
            }

            rectTransform.anchoredPosition = pos;

    //或者

            //transform.localPosition = new Vector3(pos.x, pos.y, 0);
        }

    }

    固定地址:https://mp.csdn.net/postedit/80388415

    展开全文
  • Unity3d_镜头跟随鼠标移动

    千次阅读 2017-12-11 18:38:35
    需要将摄像头放在另个GameObject里 当上下旋转的时候,只旋转摄像头(相当于人的头部) 当左右旋转的时候,旋转整体(相当于全身,包括头部) 这样使得整个视角都处于正对面,而不会出现倾斜等现象using System....

    这里写图片描述

    需要将摄像头放在另个GameObject里
    当上下旋转的时候,只旋转摄像头(相当于人的头部)
    当左右旋转的时候,旋转整体(相当于全身,包括头部)
    这样使得整个视角都处于正对面,而不会出现倾斜等现象

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CameraController : MonoBehaviour {
    
        public float speed;
        private Camera camera;
    
        // Use this for initialization
        void Start () {
            // 形变组件transform,与该脚本直接关联上的组件就是transform
            camera = GetComponentInChildren<Camera> ();
        }
    
        // Update is called once per frame
        void Update () {
            // 得到鼠标当前位置
            float mouseX = Input.GetAxis ("Mouse X") * speed;
            float mouseY = Input.GetAxis ("Mouse Y") * speed;
            // 设置照相机和Player的旋转角度,X,Y值需要更具情况变化位置
            camera.transform.localRotation = camera.transform.localRotation * Quaternion.Euler ( -mouseY, 0, 0);
            transform.localRotation = transform.localRotation * Quaternion.Euler ( 0, mouseX, 0);
    
        }
    }
    
    展开全文
  • unity3d游戏物体跟着鼠标方向移动

    万次阅读 2012-04-18 09:47:57
    思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动。 如果你看到这的话,最好先别往下看,自己按着这个思路试做一下,实在不行再看看我的哈~~~~ ...

    效果:当点击鼠标左键时,游戏对象会朝鼠标点击的方向移动,类似魔兽争霸一样。

    思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动。

    如果你看到这的话,最好先别往下看,自己按着这个思路试做一下,实在不行再看看我的哈~~~~

    var world:Vector3;
    var speed:float=0;//物体的移动速度
    function Update (){
      var screenpos=Camera.main.WorldToScreenPoint(transform.position);//物体的世界坐标转化成屏幕坐标
      var e:Vector3=Input.mousePosition;//鼠标的位置
      //当点击鼠标左键时
      if(Input.GetMouseButton(0)){
         e.z=screenpos.z;//1.因为鼠标的屏幕 Z 坐标的默认值是0,所以需要一个z坐标
         world=Camera.main.ScreenToWorldPoint(e); 
         speed=1;    
      }
      if(transform.position==world){      
         speed=0;
      }else{
         animation.Play("walk");//这是我自身带的一个默认动画,你可以把它删了
      }
      transform.LookAt(world); //物体朝向鼠标    
      transform.Translate(Vector3.forward*speed*Time.deltaTime);
      
    }



    当然,上面那个适合垂直平面,即摄像头垂直x-z平面,但一般游戏都不会垂直的。如果不垂直的话,用上面方法可能就会出现类似游戏对象穿透地面的现象,所以我们得改一下代码。

    就只用把world=Camera.main.ScreenToWorldPoint(e); 改成以下这句就行了

         world.x=Camera.main.ScreenToWorldPoint(e).x; 
         world.z=Camera.main.ScreenToWorldPoint(e).z;
         world.y=transform.position.y;
    注:穿透地面现象是Y轴,所以让y轴不变,且大小等于游戏对象的y值。


    我的QQ:397319689(有点笨),大家一起学习哈~~~~

    展开全文
  • Unity3D 物体跟随鼠标移动

    千次阅读 2019-04-20 13:53:12
    方法一(直接获取 Input.mousePositon): 将Camera设置为正交模式。 target = Camera.main.ScreenToWorldPoint(Input.mousePosition); target.y = ChessPiece.transform.position.y; ChessPiece.transform....
  • Unity3DUnity3D 物体跟随鼠标移动

    千次阅读 2020-03-11 15:29:39
    在Update中运行Vector3 mousePos=Camera.main.ScreenToWorldPoint(Input.mousePosition)+new Vector3(0,0,10);这行代码的意思是屏幕坐标转化为三维坐标,然后z轴加10就是正确的位置了transform....当前坐标跟随鼠标移动
  • Unity3d 物体跟随鼠标移动

    千次阅读 2014-10-24 14:41:27
    思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动。 如果你看到这的话,最好先别往下看,自己按着这个思路试做一下,实在不行再看看我的哈~~~~ ...
  • Unity3D之物体跟随鼠标移动和旋转

    万次阅读 2015-11-10 11:51:02
    void FixedUpdate() { if (Input.GetMouseButton(0)) { Vector3 aimPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.mai
  • 将这段代码放入update中,挂在要旋转的物体上面
  • using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour () { private float maxYRotation = 120; private float minYRotation = 0;...
  • 在开发过程中,遇到鼠标拖动某些物体从而实现一些功能,所以写了这块的代码 Vector3 vePos=Camera.main.ScreenToWorldPoint(transform.position); Vector3 mosPos = Input.mousePosition; mosPos.z = vePos.z; ...
  • Unity 3D 如何获取鼠标移动事件

    万次阅读 2018-05-24 21:08:53
    这个问题还可以是:如何让某个物体跟随鼠标移动?如何让游戏里的物体与鼠标移动绑定起来?如何用鼠标控制游戏里的物体?如何获取鼠标在屏幕上的移动和位置?如何获取鼠标的移动方向?如何获取真实鼠标的移动,不管...
  • Unity3D 镜头跟随鼠标旋转移动

    千次阅读 2018-05-23 13:33:38
    using UnityEngine;using System.Collections; public class sheji : MonoBehaviour{ public int speed = 5;  public Transform newobject; float axisX2 = 0; float axisY2 = 0; // Use this for initialization...
  • Unity2d和3d物体跟随鼠标移动

    千次阅读 2019-06-12 14:06:12
    2D:UGUI publicvoidOnBeginDrag(PointerEventDataeventData) { ima.raycastTarget=false;// offset=transform.position-Globe.Instance.UICamera.ScreenToWorldPoint(Input.mousePos...
  • unity绘制跟随鼠标移动的曲线

    千次阅读 2016-12-22 17:35:03
    参照链接 : http://blog.csdn.net/liqiangeastsun/article/details/42106153 using UnityEngine; using System.Collections; using System.Collections.Generic; public class DrawLineTest : MonoBehaviour {
  • 代码类:CameraController;只需要挂载相机/对应物体上,物体要有碰撞器才行 using UnityEngine; public class CameraController : MonoBehaviour { /// <summary>... /// 主相机的子物体 ...
  • 就比如可以在鼠标移动到UI上面的时候显示文字。 那么如何在UGUI上,鼠标移动上去显示文字说明呢。 大家都知道,当鼠标移动到button按钮上面的时候会出现变化,主要是button这个组件在控制 既然可以控制颜色,就一定...
  • 效果图如下 代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine; public class FollowMouse : MonoBehaviour { // Use this for initialization ... //...
  • unity3d视角跟随鼠标左右上下转动

    千次阅读 2019-01-05 10:14:58
    using UnityEngine; using System.Collections; //1.设置Axes为Mouse X QQ群:476842922... // MouseLook rotates the transform based on the mouse delta. ...// To make an FPS style character: ...// - Create a c...
1 2 3 4 5 ... 20
收藏数 1,124
精华内容 449
关键字:

unity3d跟随鼠标移动