Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.Xna.Framework;
- using Microsoft.Xna.Framework.Graphics;
- using Microsoft.Xna.Framework.Input;
- using System;
- namespace AICatMouse
- {
- class AgentSprites : Sprites
- {
- static string spriteName = "cat";
- static float linearVelocity = .125f;
- float maxLinearVelocity = .4f;
- float timeToTarget = .5f;
- float distance;
- Vector2 playerDistance;
- float radius = 56;
- float arrivalRadius = 16;
- Vector2 normalizedDistance;
- bool isCaught = false;
- Game ASgame;
- UserSprites user;
- public AgentSprites(Game game, SpriteBatch spriteBatch, UserSprites player) : base(game, spriteBatch, spriteName, linearVelocity)
- {
- ASgame = game;
- user = player;
- }
- public override void Update(GameTime gameTime)
- {
- //Velocity and distance
- playerDistance = new Vector2(user.Position.X - base.Position.X, user.Position.Y - base.Position.Y);
- distance = Vector2.Distance(user.Position, base.Position);
- //If cat is in slow area
- if (Math.Abs(distance) < radius)
- {
- base.Velocity = (base.Velocity * distance / radius) / timeToTarget;
- base.Position += base.Velocity;
- }
- else
- {
- normalizedDistance = playerDistance;
- normalizedDistance.Normalize();
- normalizedDistance *= maxLinearVelocity;
- base.Velocity = normalizedDistance;
- base.Position += base.Velocity * gameTime.ElapsedGameTime.Milliseconds;
- }
- //If cat arrived
- if (Math.Abs(distance) < arrivalRadius)
- {
- isCaught = true;
- Position += Vector2.Zero;
- }
- base.Update(gameTime);
- }
- public bool Caught
- {
- get
- {
- return isCaught;
- }
- set
- {
- isCaught = value;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement