我在用2维的Unity做一个简单的游戏。所以我有一个播放器和一把抓取枪。当我按下鼠标右键时,鼠标位置在任何物体的方向上,它就会抓取这个物体。但我的问题是,我有一个小圆圈(抓取点),很难把鼠标放到空中的抓取点圆圈方向上。因此,我可以添加任何偏移f.e.当我的鼠标方向从玩家是2个单位的抓取点的圆,它仍然将抓取器,但自动的抓取线将连接到抓取点的圆。下面是我的抓取器代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Grappler: MonoBehaviour
{
public LineRenderer Line;
DistanceJoint2D Joint;
Vector3 TargetPos;
RaycastHit2D Hit;
public float Distance = 10f;
public LayerMask Mask;
public float Step = 0f;
void Start()
{
Joint = GetComponent<DistanceJoint2D>();
Joint.enabled = false;
Line.enabled = false;
}
void Update()
{
if(Joint.distance > 1f)
{
Joint.distance -= Step;
}else
{
Line.enabled = false;
Joint.enabled = false;
}
if(Input.GetMouseButtonDown(1))
{
TargetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
TargetPos.z = 0;
Hit = Physics2D.Raycast(transform.position, TargetPos - transform.position, Distance, Mask);
if (Hit.collider != null && Hit.collider.gameObject.GetComponent<Rigidbody2D>() != null)
{
Joint.enabled = true;
Joint.connectedBody = Hit.collider.gameObject.GetComponent<Rigidbody2D>();
Joint.distance = Vector3.Distance(transform.position, Hit.point);
Line.enabled = true;
Line.SetPosition(0, transform.position);
Line.SetPosition(1, Hit.point);
}
}
if (Input.GetMouseButton(1))
{
Line.SetPosition(0, transform.position);
}
if (Input.GetMouseButtonUp(1))
{
Joint.enabled = false;
Line.enabled = false;
}
}
}有什么想法吗?谢谢
发布于 2020-03-22 04:50:36
听起来你应该简单地把你的碰撞放大2个单位(如果这是你想要作弊的数量)。然后,不使用光线跟踪命中位置,而使用您命中的对象的位置。
https://stackoverflow.com/questions/60792317
复制相似问题