Unity坦克炮塔旋转与鼠标

我正在制作一个统一的坦克游戏,我想用鼠标旋转坦克的炮塔。

我正在制作一个统一的坦克游戏,我想用鼠标旋转坦克的炮塔。

我试过这个:

Ray dir = MainCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(dir, out hit)){}
Turret.transform.LookAt(hit.point);

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

你能帮我吗?

0

计算鼠标和炮塔之间的角度,并用 quaternion.lookat 旋转它

0

你可以尝试这样的事情。

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);
    }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(463)
Python-猜词游戏在带有重复字符的单词上失败
上一篇
geopandas如何加入op“内”和“相交”不同
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(83条)