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中 人物 看向鼠标点