Unity 3D Script Note
5858 ワード
1.Shoot,Throw|Instantiate
var speed = 3.0;
var grenadePrefab:Transform;
function Update ()
{
//find out if a fire button is pressed
if(Input.GetButtonDown("Fire1"))
{
if(Collisions.GRENADE_AMMO > 0)
{
//create the prefab
var grenade = Instantiate(grenadePrefab, transform.position, Quaternion.identity);
//add force to the prefab
grenade.rigidbody.AddForce(transform.forward * 2000);
Collisions.GRENADE_AMMO --;
//modify the gui text.
GameObject.Find("g_Count").guiText.text = ""+Collisions.GRENADE_AMMO;//"" is to convent the int to string
print("YOU NOW HAVE "+ Collisions.GRENADE_AMMO +" GRENADES");
}
}
}
2.Collision(Raycast) ,PlayAnimation
static var GRENADE_AMMO = 0;
function OnControllerColliderHit(hit : ControllerColliderHit)
{
if(hit.gameObject.tag == "crateGrenades")
{
//destroy the ammo box
Destroy(hit.gameObject);
//add ammo to inventory
GRENADE_AMMO += 8;
print("YOU NOW HAVE "+ GRENADE_AMMO +" GRENADES");
GameObject.Find("g_Count").guiText.text = ""+GRENADE_AMMO;
}
}
var rayCastLength = 5;
function Update()
{
var hit : RaycastHit;
//check if we're colliding
if(Physics.Raycast(transform.position, transform.forward, hit, rayCastLength))
{
//...with a door
if(hit.collider.gameObject.tag == "door")
{
//open the door
hit.collider.gameObject.animation.Play("door_open");
}
}
}
3.Grenade Explosion
var creationTime = Time.time;
var explosionPrefab : Transform;
var lifeTime = 3;
function Awake()
{
creationTime = Time.time;
}
function Update ()
{
if(Time.time > (creationTime+lifeTime))
{
Destroy(gameObject);
Instantiate(explosionPrefab, transform.position, Quaternion.identity);
}
}
4.MenuItem:
var isQuitBtn = false;
function OnMouseEnter ()
{
renderer.material.color = Color.red;
}
function OnMouseExit ()
{
renderer.material.color = Color.white;
}
function OnMouseUp()
{
if(isQuitBtn)
{
Application.Quit();
}
else
{
Application.LoadLevel(1);
}
}
5.Denfender AI (Look at slowly,Visible range,InvokeRepeating)
var target : Transform;
var range = 10.0;
var leftFlame : GameObject;
var rightFlame : GameObject;
static var mode = "idle";
var gunSpeed = 0.05;
function Awake()
{
target = GameObject.FindWithTag("Player").transform;
leftFlame.renderer.enabled = false;
rightFlame.renderer.enabled = false;
}
function Update ()
{
if(target && CanAttackTarget())
{
//transform.LookAt(target);
var targetRotation = Quaternion.LookRotation(target.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 1.2);
var forward = transform.forward;
var targetDir = target.position - transform.position;
var angle = Vector3.Angle(targetDir, forward);
if(angle < 10.0)
{
DoDamage();
}
else
{
}
}
}
var damageTimer = 0.0;
function DoDamage()
{
if(damageTimer==0.0)
{
damageTimer = Time.time;
}
if((damageTimer+0.05) > Time.time)
{
return;
}
else
{
Player.HEALTH -= 1;
print(Player.HEALTH);
damageTimer = Time.time;
}
}
function CanAttackTarget()
{
//Check if the target is close enough
if(Vector3.Distance(transform.position, target.position) > range)
{
Disengage();
return false;
}
var hit : RaycastHit;
//Check if there's collision inbetween turret & target
if(Physics.Linecast(transform.position, target.position, hit))
{
if(hit.collider.gameObject.tag != "Player")
{
Disengage();
return false;
}
else
{
Attack();
return true;
}
}
return true;
}
function Attack()
{
if(mode != "attack")
{
InvokeRepeating("FalconAnimate", 2, gunSpeed);
mode = "attack";
}
}
function Disengage()
{
if(mode != "idle")
{
CancelInvoke();
mode = "idle";
leftFlame.renderer.enabled = false;
rightFlame.renderer.enabled = false;
}
}
function FalconAnimate()
{
if(leftFlame && rightFlame)
{
if(leftFlame.renderer.enabled)
{
leftFlame.renderer.enabled = false;
rightFlame.renderer.enabled = true;
}
else
{
leftFlame.renderer.enabled = true;
rightFlame.renderer.enabled = false;
}
}
else
{
print("Effects on Turret not set!");
}
}
6.GUI
a.Set Text
GameObject.Find("g_Count").guiText.text = ""+5;
b.Set Texture
var h80 : Texture2D;
GameObject.Find("g_Health").guiTexture.texture=h80;
7.Audio
var audiofile : AudioClip;
audiofile.PlayOneShot();
//audiofile.Play();