首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用鼠标旋转统一坦克炮塔

用鼠标旋转统一坦克炮塔
EN

Stack Overflow用户
提问于 2022-09-17 11:44:57
回答 2查看 104关注 0票数 0

我正在做一个坦克游戏统一,我想旋转坦克的炮塔与鼠标。主照相机是炮塔的孩子。

我试过这个:

代码语言:javascript
复制
Ray dir = MainCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(dir, out hit)){}
Turret.transform.LookAt(hit.point);

但炮塔开始无限旋转。我想是因为MainCamera是炮塔的孩子。所以我不知道该怎么做。

你能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2022-09-17 12:10:17

计算鼠标与炮塔之间的夹角,并用quaternion.lookat旋转

票数 0
EN

Stack Overflow用户

发布于 2022-09-17 13:19:47

你可以试试这样的东西。

代码语言:javascript
复制
using UnityEngine;

public class Rotator : MonoBehaviour
{

    [SerializeField]
    private Camera _camera;

    [SerializeField] private float _rotationFactor = 0.01f;

    private Transform _cameraTransform;
    
    void Start()
    {
        _cameraTransform = _camera.transform;
    }

    void Update()
    {
        var screenCenter = new Vector3(Screen.width / 2.0f, Screen.height / 2.0f);
        // This prevents camera rotation when mouse is in 100 pixels circle in screen center.
        if (!(Input.mousePosition - screenCenter).magnitude < 100f) 
            return;
        
        var mouseWorldPos = _camera.ScreenToWorldPoint(Input.mousePosition + Vector3.forward);
        Debug.Log(mouseWorldPos);
        _camera.transform.rotation = Quaternion.Slerp(
            _camera.transform.rotation,
            Quaternion.LookRotation(mouseWorldPos - _cameraTransform.position),
            _rotationFactor);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73754556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档