我不知道如何在我的Unity版本https://www.youtube.com/watch?v=FUkdz8jYt3w
中使这把shot弹枪跳起来这是如何工作的?
我正在使用看起来像胶囊的“第一人称控制器” 有图像:https://imgur.com/a/uvfAePX
这是旧版本的Unity 4.5.5。我已经尝试过RigidBody,但没有任何反应。我已经尝试过Transform
,但还是没有结果。
第一人称控制者:
using UnityEngine;
using System.Collections;
public class run : MonoBehaviour
{
public float speed = 6.0F;
public float jumpSpeed = 8.0F;
public float gravity = 20.0F;
private Vector3 moveDirection = Vector3.zero;
public Transform character;
public int CharacterForce = 5000;
public int time = 1;
void Update()
{
CharacterController controller =
GetComponent<CharacterController>();
if (controller.isGrounded)
{
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis ("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump"))
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move (moveDirection * Time.deltaTime);
if (Input.GetMouseButtonDown(0))
{
Transform BulletInstance = (Transform)Instantiate(character, GameObject.Find("CameraRSP").transform.position, Quaternion.identity);
BulletInstance.GetComponent<Rigidbody>().AddForce(transform.forward * CharacterForce);
}
}
}
“手榴弹”代码:
using UnityEngine;
using System.Collections;
public class grenade : MonoBehaviour
{
public Transform GrenadeF;
public int force = 500;
public float radius;
void Start()
{
Collider[] col = Physics.OverlapSphere(transform.position, radius);
foreach (Collider c in col)
{
c.GetComponent<Rigidbody>().AddExplosionForce(force, transform.position, radius);
}
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.blue;
Gizmos.DrawWireSphere(transform.position, radius);
}
}
当我使用Transform
时,我希望它可以在任何方向上工作,但它只能在一个方向上工作。
当我使用RigidBody
时,我希望这样做会起作用,但是我的胶囊甚至都没有动。
答案 0 :(得分:2)
检出
upwardsModifier
参数
AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, float upwardsModifier = 0.0f, ForceMode mode = ForceMode.Force));
(Unity 4的API不再可用,但我想那里应该已经一样了
调整爆炸的视在位置,使其看起来像举起物体。
和
使用此参数,可以使爆炸看起来像是将物体扔向空中,这可以产生更戏剧性的效果,而不是简单的向外作用力。力只能施加到活动的刚体上。
默认情况下为0
,因此如果您不通过它,则不会有任何向上的作用力。
如您在API
的示例中所见Vector3 explosionPos = transform.position;
Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
foreach (Collider hit in colliders)
{
Rigidbody rb = hit.GetComponent<Rigidbody>();
// |
// v
if (rb) rb.AddExplosionForce(power, explosionPos, radius, 3.0f);
}
他们通过了3.0f
为upwardsModifier
。这使得爆炸
为了计算力的方向(即,效果的中心和半径未修改),似乎居中于其实际位置以下3.0个单位。
注意:请在智能手机上输入内容,因此无需任何担保,但我希望这个主意会清楚