Mouse unity3d:在鼠标点击屏幕的地方拍摄
看看各种各样的公告牌,这是一个常见的问题,但我在网上找不到任何好的答案 我的项目有一辆通过箭头键移动的第一人称汽车。我希望安装在汽车上的枪能够通过十字准线射击,可以瞄准当前屏幕上的任何位置。现在子弹一直从中间射出,除了我点击屏幕时什么也没发生(大约50%)。以下是我通过网络上的各种脚本获得的代码: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
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来说是相当低的,所以如果你想避免将来的问题,你可能会想提高很多
另外,刚体已经被弃用,我不确定你是否应该做一个(游戏对象)。刚体直接像那样