Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mouse unity3d:在鼠标点击屏幕的地方拍摄_Mouse_Unity3d_Frame Rate - Fatal编程技术网

Mouse unity3d:在鼠标点击屏幕的地方拍摄

Mouse unity3d:在鼠标点击屏幕的地方拍摄,mouse,unity3d,frame-rate,Mouse,Unity3d,Frame Rate,看看各种各样的公告牌,这是一个常见的问题,但我在网上找不到任何好的答案 我的项目有一辆通过箭头键移动的第一人称汽车。我希望安装在汽车上的枪能够通过十字准线射击,可以瞄准当前屏幕上的任何位置。现在子弹一直从中间射出,除了我点击屏幕时什么也没发生(大约50%)。以下是我通过网络上的各种脚本获得的代码: var speed = 20; var bullet: GameObject; function Update () { var hit : RaycastHit; if(Input.GetBu

看看各种各样的公告牌,这是一个常见的问题,但我在网上找不到任何好的答案

我的项目有一辆通过箭头键移动的第一人称汽车。我希望安装在汽车上的枪能够通过十字准线射击,可以瞄准当前屏幕上的任何位置。现在子弹一直从中间射出,除了我点击屏幕时什么也没发生(大约50%)。以下是我通过网络上的各种脚本获得的代码:

var speed = 20;
var bullet: GameObject;

function Update () {

var hit : RaycastHit;

if(Input.GetButtonDown("Fire1")){
    var ray = Camera.main.ScreenPointToRay (Input.mousePosition); //ray from
    // through the mousePosition.



    if(Physics.Raycast(ray, hit, 1000)) { //does the ray collide with 
    // anything.

        //add stuff here for finding type of object and such.
        Debug.Log("Hit Something at mouse position");
        Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);
        //Display the ray.
        var projectile:GameObject = Instantiate(bullet,transform.position,transform.rotation);

        projectile.rigidbody.velocity = transform.forward * speed;
    }
}
}


如果有人能提供帮助,我将不胜感激。

如果我理解您的尝试,我可以告诉您,您可能应该研究的是,为什么您的射弹从变换的旋转而不是光线的旋转设置旋转

射弹显然是从运载工具中获得了它的所有属性(包括那些应该从原点分离的属性),并相应地跟随

尝试将投射物的旋转设置为光线的旋转

此外,由于您要测试的距离,您的光线很可能只命中一半的时间。尝试增加该数字,或创建墙以使其在较短范围内碰撞。

您的光线是正确的(指向屏幕中间),但它与子弹的移动方式无关。子弹根据transform.forward*速度移动。你需要做的是获得射线的命中点,然后获得从子弹原点到该点的方向

Vector3 direction = hit.point - projectile.transform.position;
projectile.rigidbody.velocity = direction * speed;
1000对于screenPointToRay来说是相当低的,所以如果你想避免将来的问题,你可能会想提高很多

另外,刚体已经被弃用,我不确定你是否应该做一个(游戏对象)。刚体直接像那样