using UnityEngine;
using System.Collections;
publicclass Bomb : MonoBehaviour {
publicfloat radius = 5.0f;//爆炸半径publicfloat power = 10;//爆炸力publicfloat explosiveLift = 1.0f;//从下方多少距离施加力// Use this for initializationvoid Start () {
}
// Update is called once per framevoid Update () {
if (Input.GetKeyDown (KeyCode.Space))
Fire ();
}
privatevoidFire(){
Vector3 pos = transform.position;
Collider[] colliders = Physics.OverlapSphere (pos,radius);
foreach (var hit in colliders) {
if (hit.GetComponent<Rigidbody> ()) {
hit.GetComponent<Rigidbody> ().AddExplosionForce (power,pos,radius,explosiveLift);
}
}
}
}
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
publicclass TimeBack : MonoBehaviour {
publicbool isRewinding = false;//用来判断是否需要时光逆流publicfloat recordTime;//时光逆流时间private List<Information> informations;
private Rigidbody rb;
// Use this for initializationvoid Start () {
rb = GetComponent<Rigidbody> ();
informations = new List<Information> ();
}
// Update is called once per framevoid Update () {
//按下shift开始时光倒流if (Input.GetKeyDown (KeyCode.LeftShift)) {
StartRewind ();
}
//松开时停止if (Input.GetKeyUp (KeyCode.LeftShift)) {
StopRewind ();
}
}
void FixedUpdate(){
if (isRewinding)
Rewind ();
else
Record ();
}
///<summary>/// 开始时光逆流///</summary>privatevoidStartRewind(){
isRewinding = true;
rb.isKinematic = true;//使物体不受力
}
///<summary>/// 停止时光逆流///</summary>privatevoidStopRewind(){
isRewinding = false;
rb.isKinematic = false;//物体开始受力
}
///<summary>/// 时光逆流///</summary>privatevoidRewind(){
//记录点数量大于0时才可以倒流if (informations.Count >0) {
Information information = informations [0];
transform.position = information.position;
transform.rotation = information.rotation;
informations.RemoveAt (0);
}
}
///<summary>/// 记录物体的信息///</summary>privatevoidRecord(){
if (informations.Count > Mathf.Round (recordTime / Time.fixedDeltaTime)) {
informations.RemoveAt (informations.Count-1);
}
informations.Insert (0,new Information(transform.position,transform.rotation));
}
}
using System;
using UnityEngine;
///<summary>/// 记录物体的位置跟旋转信息,用于实现时光倒流的技能///</summary>publicclass Information{
public Vector3 position;
public Quaternion rotation;
publicInformation (Vector3 _position,Quaternion _rotation)
{
position = _position;
rotation = _rotation;
}
}