示例#1
0
    protected void OnTriggerEnter2D(Collider2D c)
    {
        if (c.transform != parent)
        {
            if (c.tag == "Monster")
            {
                Monster m = c.GetComponent <Monster> ();
                m.TakeDamage(GetPC().AttackDamage(), parent);
                if (m.health <= 0f)
                {
                    m.Death();
                }
            }

            if (c.gameObject.layer == LayerMask.NameToLayer("Player"))
            {
                PlayerControllable pc = c.GetComponent <PlayerControllable> ();

                if (pc.invulnerable)
                {
                    return;
                }

                float damage = GetPC().AttackDamage();
                pc.Damage(damage);
                pc.KnockBack(((Vector3.right * (c.transform.position.x - transform.position.x)).normalized + Vector3.up).normalized
                             * GetPC().knockback);
            }
            Destroy(gameObject);
        }
    }
示例#2
0
    void OnCollisionEnter2D(Collision2D c)
    {
        if (c.transform.tag == "Chaser" || c.transform.tag == "Runner")
        {
            Vector2 dir = (c.transform.position - transform.position + Vector3.up).normalized;

            PlayerControllable pc = c.gameObject.GetComponent <PlayerControllable> ();
            pc.Damage(attackDamage);
            pc.KnockBack(dir * 10f);
        }
    }
示例#3
0
 public void switchPlayerControl(PlayerControllable playerControllable)
 {
     if (curPlayerControllable)
     {
         curPlayerControllable.ReleaseControl(true, () =>
         {
             setCurPlayerControllable(playerControllable);
         });
     }
     else
     {
         setCurPlayerControllable(playerControllable);
     }
 }
示例#4
0
 public void SetControllable(PlayerControllable controllable)
 {
     controlling = controllable;
     controller  = controllable.GetComponent <CharacterController>();
     if (cameraFollower == null)
     {
         cameraFollower = GetComponent <CameraFollower>();
     }
     cameraFollower.target = controllable.cameraTarget;
     cameraTransform       = controllable.cameraTarget.transform;
     playerStats           = controllable.playerStats;
     if (OnControllableChange != null)
     {
         OnControllableChange(controllable);
     }
 }
示例#5
0
 protected override void Awake()
 {
     base.Awake();
     thisControllable = GetComponent <PlayerControllable>();
 }
示例#6
0
 protected override void OnControllableChange(PlayerControllable controllable)
 {
     carSphereRB = controllable.GetComponent <CarController>().carSphere.GetComponent <Rigidbody>();
 }
示例#7
0
 void SetControllable(PlayerControllable c)
 {
     controllable = c;
     playerStats  = c.GetComponent <PlayerStats>();
     OnControllableChange(c);
 }
示例#8
0
 protected virtual void OnControllableChange(PlayerControllable controllable)
 {
 }
示例#9
0
    public void switchPlayerControlToFirstPerson()
    {
        PlayerControllable playerControllable = _playerGameObject.GetComponent <PlayerControllable>();

        switchPlayerControl(playerControllable);
    }
示例#10
0
 private void setCurPlayerControllable(PlayerControllable playerControllable)
 {
     curPlayerControllable = playerControllable;
     curPlayerControllable.TakeControl();
 }
示例#11
0
 protected override void OnControllableChange(PlayerControllable controllable)
 {
     staticOffset = controllable.cameraStaticOffset;
     carSphere    = controllable.GetComponent <CarController>().carSphere;
 }