2017-12-11 18:38:35 amy260231120 阅读数 7879

这里写图片描述

需要将摄像头放在另个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);

    }
}
2013-07-20 14:59:28 a2587539515 阅读数 3218

账号被盗,文章被修改,博主已将博文删除

2017-07-10 15:23:09 ZL_GSYY 阅读数 818

1、准备好要替换的鼠标图标,导入到Unity3d中。

Ps.导入后纹理类型为Cursor,否则设置之后项目运行时出现黑色方块。


2、在项目Build Settings中的Player Settings中设置Default Cursor的纹理为自己导入的纹理,点击发布即可看到自定义的鼠标了。


2019-12-22 14:30:57 zhunju0089 阅读数 217

效果图:

1.创建一个三维物体Cylinder圆柱体 Target

2.创建词汇表Yellow材质球

3.将材质球挂载到Target物体上

4.创建脚本MouseMove.cs

MouseMove.cs代码

using UnityEngine;
/*
 让物体完全跟随鼠标
     */
public class MouseMove : MonoBehaviour
{
    [Header("主相机")]
    [Tooltip("主相机")]
    /// <summary>
    /// 主相机
    /// </summary>
    public Camera m_mainCamera;
    [Header("目标物体")]
    [Tooltip("目标物体")]
    /// <summary>
    /// 目标物体
    /// </summary>
    public Transform m_target;

    void Start()
    {
        isDown = false;
        targetWTSP = m_mainCamera.WorldToScreenPoint(m_target.position);
    }
    /// <summary>
    /// 是否按下
    /// </summary>
    private bool isDown;
    /// <summary>
    /// 记录初始化时候target世界坐标转屏幕坐标时候的位置 WTSP==WorldToScreenPoint
    /// </summary>
    private Vector3 targetWTSP;
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) {
            isDown = true;
        }
        if (Input.GetMouseButtonUp(0))
        {
            isDown = false;
        }
    }
    private void LateUpdate()
    {
        if (isDown)
        {
            Vector3 mouseVec3 = m_mainCamera.ScreenToWorldPoint(
                new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetWTSP.z)
            );
            m_target.position = mouseVec3;
        }
    }
}

5.新建一个空物体Script,并将MouseMove.cs脚本挂载上去,再将相机和Target物体拖拽到脚本上

完毕!

 

 

 

 

2019-09-19 09:40:08 qq_34735841 阅读数 288

原本以为只要将鼠标坐标转为世界坐标,然后将转换后的坐标赋给物体就能实现。经多次尝试发现,鼠标转成世界坐标之后缺一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 3d 鼠标旋转物体脚本

博文 来自: dickysun1987
没有更多推荐了,返回首页