【发布时间】:2019-05-20 17:51:39
【问题描述】:
我不明白如何在我的 Unity 版本中使这种霰弹枪跳跃:https://www.youtube.com/watch?v=FUkdz8jYt3w
这是如何工作的?
我正在使用看起来像胶囊的“第一人称控制器” 有图: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 时,我预计这会起作用,但我的胶囊甚至没有移动。
【问题讨论】:
-
你在做什么用
grenade脚本生成GameObjects?