【发布时间】:2019-05-23 23:23:22
【问题描述】:
在输入左键 (Fire1) 时,弹丸从 projectileSpawn 位置生成。在右键单击(Fire2)时,我想让弹丸“反向”射击并从 projectileSpawnTwo 位置开始并返回到初始 projectileSpawn 位置。它目前向前射击,但我希望弹丸产生回一个确切的位置。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerWeapon : MonoBehaviour
{
public GameObject projectilePrefab;
public GameObject projectileTwoPrefab;
public Transform projectileSpawn;
public Transform projectileSpawnTwo;
public float projectileSpeed = 30;
void Update ()
{
if (Input.GetButtonDown("Fire1"))
{
Fire();
}
if (Input.GetButtonDown("Fire2"))
{
Fire2();
}
}
private void Fire()
{
GameObject projectile = Instantiate(projectilePrefab);
Physics.IgnoreCollision(projectile.GetComponent<Collider>(),
projectileSpawn.parent.GetComponent<Collider>());
projectile.transform.position = projectileSpawn.position;
var rot = projectile.transform.rotation.eulerAngles;
projectile.transform.rotation = Quaternion.Euler(rot.x, transform.eulerAngles.y, rot.z);
projectile.GetComponent<Rigidbody>().AddForce(projectileSpawn.forward * projectileSpeed, ForceMode.Impulse);
}
private void Fire2()
{
GameObject projectile = Instantiate(projectileTwoPrefab);
Physics.IgnoreCollision(projectile.GetComponent<Collider>(),
projectileSpawnTwo.parent.GetComponent<Collider>());
projectile.transform.position = projectileSpawnTwo.position;
var rot = projectile.transform.rotation.eulerAngles;
projectile.transform.rotation = Quaternion.Euler(rot.x, transform.eulerAngles.y, rot.z);
projectile.GetComponent<Rigidbody>().AddForce(projectileSpawnTwo.forward * projectileSpeed, ForceMode.Impulse);
}
}
【问题讨论】: