当前位置: 首页 > 知识库问答 >
问题:

如何根据鼠标指针的位置从屏幕中心向特定方向启动实例化对象?

胡霖
2023-03-14

我正在创建一个简单的游戏,你被锁在屏幕中央,必须在物体向你移动时拍摄它们。我目前面临的问题是,我无法向鼠标光标的方向发射子弹。目前,我的代码是这样的

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

public class Bullet : MonoBehaviour {

    PlayerScript playerScript;
    public float xVel;
    public float yVel;
    public float direction;

    private void Awake()
    {
        playerScript = FindObjectOfType<PlayerScript>();
        //playerScript.AngleDeg is the direction the player is facing (based on mouse cursor)
        transform.rotation = Quaternion.Euler(0, 0, playerScript.AngleDeg);

        direction = transform.rotation.z;

        //from the unit circle (x = cos(theta), y = sin(theta)
        xVel = Mathf.Cos(direction *  Mathf.PI);
        yVel = Mathf.Sin(direction *  Mathf.PI);

    }

    void Update () {
        transform.position += new Vector3(xVel,yVel,0);
    }
}

目前,当我运行代码时,子弹射出的角度是正确的,当玩家侧向时,子弹射出的角度是正确的,但当玩家垂直定向时,子弹射出的角度是完全45度。

共有1个答案

程和蔼
2023-03-14

将其作为组件附加到实例化的bullet对象,它应该可以工作。

    Transform playerTransform;
    float bulletSpeed;
    Vector3 directionToShoot

    void Start()
    {
    playerTransform = FindObjectOfType<PlayerScript>().gameObject.transform;
    bulletSpeed = 3f;
    //Direction for shooting
    directionToShoot = playerTransform.forward - Camera.main.ScreenToWorldPoint(Input.mousePosition);
    }

    void Update()
    {
    //shoot
    transform.Translate(directionToShoot * bulletSpeed * Time.deltaTime);
    }
 类似资料:
  • 问题内容: 我正在构建HTML5游戏,并且尝试将鼠标指针放在特定事件上的某个控件上,以便在特定方向上移动始终具有相同的结果。这可能吗? 问题答案: 因此,我知道这是一个古老的话题,但是我首先要说这是不可能的。当前最接近的事情是将鼠标锁定在单个位置,并跟踪其x和y的变化。这个概念已经被Chrome和Firefox所采用。它由所谓的 Mouse Lock进行管理 ,点击逃逸将破坏它。通过我的 简要 阅

  • 问题内容: 我敢肯定这是可能的,但是我所有的搜索都空白了。 在Java中,是否可以在Java应用程序之外注册鼠标移动事件?因此,如果鼠标指针移动到屏幕上的任何地方,我都会回电。轮询可能是近似值,但必须有更好的方法。 谢谢 解释用例:它仅用于一个宠物项目,但是基本上是当鼠标击中屏幕边缘时触发事件。我还认为,如果您尝试 超越 屏幕边缘,可能会触发其他事件。为此,我认为鼠标运动侦听器可能更合适。 问题答

  • 我正在使用Bootstrap4框架创建一个移动第一站点。我正在尝试创建一个JavaScript函数,它将在

  • 问题内容: 如何按照自然风格对齐工具提示:鼠标指针的右下角? 问题答案: 对于默认的工具提示行为,只需添加属性。但是它不能包含图像。 在您弄清楚我是用纯JavaScript完成此问题之前,希望您发现它有用。图像将弹出并跟随鼠标。 JavaScript CSS 扩展多个元素 多个元素的一种解决方案是更新所有工具提示,并在鼠标移动时将其设置在光标下方。

  • 问题内容: 如何在Java中使用鼠标指针捕获屏幕图像?我知道可以使用Robot类捕获屏幕,但是它可以捕获没有鼠标指针的屏幕,因此这不是我的解决方案。 问题答案: 这不是直接可能的,但是您可以用来获取指针当前所在的位置的信息。 将屏幕截图作为后,您可以在Java 2D API的帮助下将您自己的光标图像确切地放置在屏幕截图上的该位置。

  • 我用GridLayoutManager实现了一个RecyclerView,它有垂直和水平滚动,我需要将布局滚动到特定的位置,引用了很多代码,但对我来说没有效果。 Java类代码: XML: 只有在添加了垂直和水平滚动的嵌套滚动视图后,滚动才能在两个方向上顺利工作。现在我需要滚动到特定的位置。 谢谢您