private bool refilledHealth = true; // Only refill the player's health on the first pickup! public override void OnPickUp(LNBPlayerCharacter owner) { base.OnPickUp(owner); playerOwner.GetComponent <Health>().AddHealth(heartsToGive * 100, refilledHealth); refilledHealth = false; }
// Use this for initialization void Start() { playerCharacter = GetComponentInChildren <LNBPlayerCharacter>(); if (!playerCharacter) { Debug.Log("No LNBPlayerCharacter found for this LNBPlayerController!"); } }
protected override void OnFire(EWeaponState prevState) { base.OnFire(prevState); Transform shootTransform = MuzzleTransform; // Fire a ray cast from the player camera if (weaponOwner.CompareTag("Player")) { LNBPlayerCharacter playerOwner = weaponOwner.GetComponent <LNBPlayerCharacter>(); Transform eyeTran = playerOwner.GetEyeTransform(); // Fire ray int layerMask = 1 << LayerMask.GetMask("AimRay"); RaycastHit rayHit; Vector3 aimDir; Ray aimRay = new Ray(); aimRay.direction = eyeTran.forward; aimRay.origin = eyeTran.position; // If hit something if (Physics.Raycast(aimRay, out rayHit, MaxDistance, layerMask)) { aimDir = rayHit.point - shootTransform.position; } else { aimDir = aimRay.direction * MaxDistance; rayHit.distance = MaxDistance; } shootTransform.rotation = Quaternion.LookRotation(aimDir); #if DD_DEBUG // Aim trace DebugExtension.DebugArrow(aimRay.origin, aimRay.direction * rayHit.distance, Color.red, 1.0f); //Aim Direction DebugExtension.DebugArrow(shootTransform.position, aimDir, Color.green, 1.0f); #endif } // Spawn our projectile GameObject newProjObj = projectilePool.GetNextFree(); if (newProjObj) { newProjObj.SetActive(true); Projectile newProjectile = newProjObj.GetComponent <Projectile>(); if (!newProjectile) { Debug.Log("Instantiated something that's not a projectile! Add it in your prefab!"); return; } newProjectile.Launch(this, weaponOwner, MuzzleTransform); } }
public void InteractWith(Interactor interactor) { LNBPlayerCharacter interactorOwner = interactor.GetComponentInParent <LNBPlayerCharacter>(); GameObject item = GetGameObject(); if (!interactorOwner) { return; } switch (ItemType) { case EItemType.Weapon: BaseWeapon weapon = item.GetComponent <BaseWeapon>(); if (!weapon) { Debug.LogWarning(gameObject.name + " has an invalid item type!"); return; } interactorOwner.PickupWeapon(weapon); break; case EItemType.Gear: BaseGear gear = item.GetComponent <BaseGear>(); if (!gear) { Debug.LogWarning(gameObject.name + " has an invalid item type!"); return; } interactorOwner.PickUpGear(gear); break; case EItemType.Key: interactorOwner.PickUpKey(item); break; default: Debug.LogWarning(gameObject.name + " has an invalid item type!"); break; } interactor.PickedUpObject(gameObject); Destroy(gameObject); }
//void InitAsInteractable(); // Initialize ourself as an interactable. Great for items that need to turn off their own collision //void LeaveInteractable(); // Leave an interactable state. IE allow weapons to function again public void InteractWith(Interactor interactor) { LNBPlayerCharacter player = interactor.GetOwner().GetComponent <LNBPlayerCharacter>(); if (!player) { return; } GameObject key = player.UseKey(); if (!key) { return; } StartCoroutine(HandleDoorOpenSequence(key)); }
public virtual void OnPickUp(LNBPlayerCharacter owner) { playerOwner = owner; }