
提尔锋
不要强迫矮人为你锻造武器。
查看大图我尽力确保尽可能准确,但这并不能保证永不失误。每次它被“拔出”时,确实会杀死一个男人或女人,这里说的“拔出”是指被拿起。它不会生锈,它无法像切穿衣物那样轻易地切穿石头和铁。它不会成为三大邪恶的根源,并且最终会杀死你,除非你逃跑,而这一点你或许可以做到。
using BS;
using System.Collections.Generic;
using UnityEngine;
namespace Tyrfing
{
public class ItemTyrfing : MonoBehaviour
{
public Item item;
public Material runesMat;
public MeshRenderer runesMesh;
public Color runesColor;
public Color runesEmission;
public float resetTime = 30.0f;
public float timeLeft = 30.0f;
public bool timerOn = false;
public bool killMode = false;
protected void Awake()
{
item = this.GetComponent<Item>();
item.OnUngrabEvent += OnUnGrab;
item.OnGrabEvent += OnGrab;
runesMesh = transform.Find("Mesh").Find("Models").Find("Runes").GetComponent(typeof(MeshRenderer)) as MeshRenderer;
runesMat = runesMesh.material;
item.rb.useGravity = true;
item.data.grippable = true;
}
protected void Update()
{
if (timerOn)
{
timeLeft -= Time.deltaTime;
}
if (timeLeft < 0)
{
if(killMode == false)
{
item.data.grippable = false;
item.rb.useGravity = false;
killMode = true;
}
item.transform.LookAt(Creature.player.transform);
item.transform.position = item.transform.position + new Vector3(0, 0.03f, 0);
float step = 2.5f * Time.deltaTime;
item.transform.position = Vector3.MoveTowards(item.transform.position, Creature.player.transform.position, step);
if (Vector3.Distance(item.transform.position, Creature.player.transform.position) < 0.5f)
{
Creature.player.health.Kill();
MakeGlow(-10.0f);
item.rb.useGravity = true;
item.data.grippable = true;
timerOn = false;
timeLeft = resetTime;
}
}
}
public void OnGrab(Handle handle, Interactor interactor)
{
MakeGlow(10.0f);
timerOn = true;
KillNearestTarget();
}
public void OnUnGrab(Handle handle, Interactor interactor, bool throwing)
{
}
void MakeGlow(float amount)
{
runesMesh = transform.Find("Mesh").Find("Models").Find("Runes").GetComponent(typeof(MeshRenderer)) as MeshRenderer;
runesMat = runesMesh.material;
Color runesColor;
ColorUtility.TryParseHtmlString("#FF0000", out runesColor);
Color baseColor = runesColor;
Color finalColor = baseColor * Mathf.LinearToGammaSpace(amount);
runesMat.SetColor("_EmissionColor", finalColor);
}
void KillNearestTarget()
{
Creature target = Creature.player;
float targetDistance = 10000000.0f;
foreach (Creature target in Creature.list)
{
if (target != Creature.player)
{
if (target.state != Creature.State.Dead)
{
if (Vector3.Distance(item.transform.position, target.transform.position) < targetDistance)
{
targetDistance = Vector3.Distance(item.transform.position, target.transform.position);
target = target;
}
}
}
}
if (target != Creature.player)
{
target.health.Kill();
}
}
}
}
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。