我对编码很陌生,而且我正在努力创建乒乓球游戏。
我编写了敌人桨位置随球位置移动的脚本。 (很简单)
public float speed = 6f;
Vector2 player2;
Vector2 player2position;
GameObject ballpos;
void Start ()
{
ballpos = GameObject.FindGameObjectWithTag ("ball");
}
void Update()
{
player2 = Vector2.Lerp (gameObject.transform.position , ballpos.transform.position , Time.deltaTime * speed );
player2position = new Vector2 ( 3.1f , Mathf.Clamp ( player2.y , -2.4f, 2.4f)) ;
gameObject.transform.position = new Vector2 ( 3.1f , player2position.y );
}
代码的作用是""中心""敌人桨将相对于"""""球。
现在我要做的就是让敌人随机向不同的方向击球,这样敌人的桨和球之间的碰撞发生在敌人的桨的边缘。 (并不总是与中心有关)。
另外,我已经设定了球与敌人桨之间的距离,因此当距离>时, 3敌人的桨将停止。
if (Mathf.Abs (ballpos.transform.position.x - paddle.transform.position.x) > 3)
{
speed = 0f;
}
if (Mathf.Abs (ballpos.transform.position.x - paddle.transform.position.x) < 3)
{
speed = 6f;
}
你可以帮我解决这个问题。我一直试图这样做两天。
谢谢:)
答案 0 :(得分:0)
您可以将物理材质组件添加到您的球中以获得弹性效果,并且移动两个玩家使用简单的移动脚本。 现在要知道球的位置,您可以使用OnCollisionEnter2D功能和另一个根据击球位置计算球的速度的功能。
void OnCollisionEnter2D(Collision2D col) {
if (col.gameObject.name == "PlayerLeft") // collide with left player
{
float y = AFactor(transform.position,
col.transform.position,
col.collider.bounds.size.y);
// Calculate direction, make length=1 via .normalized
Vector2 dir = new Vector2(1, y).normalized;
// Set Velocity with dir * speed
GetComponent<Rigidbody2D>().velocity = dir * speed;
}
if (col.gameObject.name == "PlayerRight")// hit right player
{
float y = AFactor(transform.position,
col.transform.position,
col.collider.bounds.size.y);
// Calculate direction, make length=1 via .normalized
Vector2 dir = new Vector2(-1, y).normalized;
// Set Velocity with dir * speed
GetComponent<Rigidbody2D>().velocity = dir * speed;
}