c#获取3D中和2D 即鼠标点那个位置 当前物体看向对应鼠标点的位置

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChangeBarrel : MonoBehaviour {
    //炮身旋转
    public  RectTransform UGUItransform;
    public Camera mainCamera;
    
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        //定义一个角度用来使大炮旋转相应的角度
        float angle;
        //定义一个世界坐标的鼠标位置
        Vector3 mousepos;
        //api的工具 获取当前canves的鼠标位置
        RectTransformUtility.ScreenPointToWorldPointInRectangle(UGUItransform, new Vector2(Input.mousePosition.x, Input.mousePosition.y), mainCamera,out mousepos);

        Vector3 dirMouse = mousepos - transform.position;
        //计算角度
        angle = Vector3.Angle(Vector3.up,dirMouse);
        //判断此时的X坐标有利于判断此时应该旋转的方向
        if (mousepos.x > transform.position.x)
        {
            angle = -angle;
        }
        transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, angle), 5f);
    }

//这是在2D中 看向目标点 游戏列如 捕鱼达人 大炮看鼠标点
 //定义一个射线  _cam是定义的主摄像机  摄像机找到对应的点 当前人物看向那个点
            Ray ray = _cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 100, 1 << 8))
            {
                Vector3 posVector3 = new Vector3(hit.point.x, transform.position.y, hit.point.z);
                posVector3 = posVector3 - transform.position;
                transform.rotation = Quaternion.LookRotation(posVector3);
            }
//3D中 人物 看向鼠标点
 
 
 


猜你喜欢

转载自www.cnblogs.com/mafeihao/p/10046008.html